C++ gdb无法进入printf

C++ gdb无法进入printf,c++,c,gdb,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 Foundatio

以下是我的示例程序:

#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)
#包括
int main()
{
printf(“你好,早上好”\n);
返回0;
}
gcc-墙体-g温度c
/opt/langtools/bin/gdb a.out
HP gdb 3.3适用于PA-RISC 1.1或2.0(窄),HP-UX 11.00。
版权所有1986 - 2001自由软件基金会。
Hewlett-Packard Wildebest 3.3(基于GDB)包含在
GNU通用公共许可证。键入“显示复制”以查看要复制的条件
更改和/或分发副本。键入“显示保修”以获得保修/支持。
..
(gdb)b 6
0x2b14处的断点1:文件temp.c,第6行。
(gdb)运行
启动程序:/oodgfqausr/test/dfqwrk4/temp/a.out
温度c:6时的主断点1()
6 printf(“你好,早上好”\n);
(gdb)步骤
你好,早上好
7返回0;
(gdb)
一旦我尝试进入printf函数,它将退出并返回main。
这是否意味着定义printf函数的分解库没有提供调试符号?还是我做错了什么?

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

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

此外,最大符号数需要
-g3
。使用
-g3
,甚至可以使用符号常量<代码>-ggdb可能也会有帮助。GDB的Jan告诉我们没有主线GDB扩展,但苹果可能提供了一些且省略了backstrem补丁。

出于好奇,状态源而非调试符号是否意味着你可以进入一个函数?@Ricko M:不,你需要调试符号才能进入,而source则需要GDB在进入时显示源代码行。