GDB не может войти в printf - PullRequest
       4

GDB не может войти в printf

5 голосов
/ 01 апреля 2011

вот мой пример программы:

#include<stdio.h>

int main()
{

printf("hello good morning \n");
return 0;
}


gcc -Wall -g temp.c


/opt/langtools/bin/gdb a.out
HP gdb 3.3 for PA-RISC 1.1 or 2.0 (narrow), HP-UX 11.00.
Copyright 1986 - 2001 Free Software Foundation, Inc.
Hewlett-Packard Wildebeest 3.3 (based on GDB) is covered by the
GNU General Public License. Type "show copying" to see the conditions to
change it and/or distribute copies. Type "show warranty" for warranty/support.
..
(gdb) b 6
Breakpoint 1 at 0x2b14: file temp.c, line 6.
(gdb) run
Starting program: /oo_dgfqausr/test/dfqwrk4/temp/a.out

Breakpoint 1, main () at temp.c:6
6       printf("hello good morning \n");
(gdb) step
hello good morning
7       return 0;
(gdb)

как только я попытаюсь войти в функцию printf, выйдя и вернувшись к основному. Означает ли это, что библиотека shred, в которой определена функция printf, не снабжена символами отладки? Или я делаю что-то не так?

Ответы [ 3 ]

6 голосов
/ 01 апреля 2011

Это означает, что для printf нет доступных символов источника / отладки. Вы можете использовать stepi для входа в printf в любом случае, вам будет доступна только разборка (используйте команду disas).

3 голосов
/ 01 апреля 2011

Это верно, у вас, скорее всего, нет символов отладки.Убедитесь, что установлен libc-devel или аналогичный.Кроме того, обязательно скомпилируйте с -O0, чтобы предотвратить оптимизацию;оптимизация усложняет отладку.

0 голосов
/ 22 декабря 2012

Кроме того, -g3 требуется для максимального количества символов.С -g3 будут доступны даже символические константы.-ggdb тоже может быть полезным.Ян из GDB говорит нам, что нет основных расширений GDB, но Apple, возможно, предложила некоторые и пропустила патчи backstrem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...