Je dois avoir une mauvaise compréhension de la pile, ou comment les fonctions sont appelées, les résultats de backtrace que je reçois de GDB n'ont aucun sens pour moi. J'essaie de savoir où les choses sont appelées dans un programme afin que je puisse ajouter mon composant. L'outil dessine des limites sur des vidéos, ce que j'ai fait est un interpolateur. Je pensais que ça avait du sens d'ouvrir GDB et de mettre un point d'arrêt quand une boîte était en train d'être tracée, et de faire un backtrace. Voici la sortie de mu (après l'exécution du programme de ffmpeg.c main()
)Obtention d'une trace de pile à partir de GDB
#0 draw_glyphs (vidatbox=0x10183d200, picref=0x10141e340, width=720, height=480,
rgbcolor=0x10183d284 "????", yuvcolor=0x10183d278 "뀀?\020???\020???????", x=0, y=0) at
libavfilter/vf_VidAT.c:627
#1 0x000000010001ce4c in draw_text (ctx=0x10120df20, picref=0x10141e340, width=720,
height=480) at libavfilter/vf_VidAT.c:787
Abstraction faite de tous les caractères non-ascii, comment sont les deux fonctions draw_glyphs
et draw_text
être appelé? Comment se fait il n'y a rien d'autre sur la pile? Quand je choisis il me dit cadre # 1 et essayer d'aller up
,:
Initial frame selected; you cannot go up.
EDIT:
Je l'ai regardé plus, et je suis encore plus confus alors j'étais quand je demandé. La fonction draw_glyphs
n'est même pas appelée à l'intérieur de la ligne principale que je cours. J'ai parcouru tous les fichiers que cela utilise pour compiler et bien ... il n'est pas appelé n'importe où! Est-ce que cela signifie que c'est un pointeur de fonction créé dynamiquement ou quelque chose? Si oui, cela rendrait-il la pile inaccessible comme la mienne?
Etes-vous sûr que le binaire est construit avec les informations de débogage complètes activées? Sinon, gdb pourrait avoir du mal à résoudre les adresses dans les emplacements de code source (= noms de fonctions). – unwind
C'est un makefile extrêmement volumineux, mais j'ai ajouté un drapeau '-g' au CFLAGS, et j'ai supprimé toutes les instances de strip, et j'ai réduit l'optimisation au niveau 01. Y at-il d'autres choses que je devrais faire? – SetSlapShot
Est-ce que '-fomit-frame-pointer' est défini? Si c'est le cas, essayez de le supprimer. – ecatmur