gdb无法进入printf

时间:2011-04-01 11:46:10

标签: c++ c gdb

这是我的示例程序:

#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 function.its退出并返回main。 这是否意味着定义了printf函数的shred库没有提供调试符号?或者我做错了什么?

3 个答案:

答案 0 :(得分:6)

这意味着printf没有可用的源/调试符号。无论如何,您都可以使用stepi进入printf,您只能使用反汇编(使用disas命令)。

答案 1 :(得分:3)

这是正确的,您可能没有可用的调试符号。确保安装了libc-devel或类似软件。另外,请确保使用-O0进行编译以防止优化;优化使调试更难以遵循。

答案 2 :(得分:0)

此外,最大符号需要-g3。使用-g3,即使是符号常量也可用。 -ggdb也可能有所帮助。来自GDB的Jan告诉我们没有主线GDB扩展,但Apple可能提供了一些并省略了后端补丁。