Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCC:已加载符号,但函数名为“?”&引用;_C_Debugging_Gcc_Gdb_Qemu - Fatal编程技术网

GCC:已加载符号,但函数名为“?”&引用;

GCC:已加载符号,但函数名为“?”&引用;,c,debugging,gcc,gdb,qemu,C,Debugging,Gcc,Gdb,Qemu,我正在编译一个玩具操作系统,对C文件使用gcc-g,对asm文件使用nasm-g,并使用ld来整合所有内容 我用qemu-s运行它,用-x启动gdb,如下所示: file build/kernel.elf target remote localhost:1234 检查文件中的符号将显示函数及其名称: $ nm -g build/kernel.elf 00101000 D framebuffer 0010001d T kstart 00100010 T loader 00103000 B NUL

我正在编译一个玩具操作系统,对C文件使用
gcc-g
,对asm文件使用
nasm-g
,并使用
ld
来整合所有内容

我用
qemu-s
运行它,用
-x
启动
gdb
,如下所示:

file build/kernel.elf
target remote localhost:1234
检查文件中的符号将显示函数及其名称:

$ nm -g build/kernel.elf
00101000 D framebuffer
0010001d T kstart
00100010 T loader
00103000 B NULL
如果我设置了一个命名断点(例如,
breakkstart
),gdb也会跟着设置,但当它实际中断时:

0x000fd29f in ?? ()
Breakpoint 1 at 0x10001d: file src/kernel.c, line 19.
(gdb) bt
#0  0x000fd29f in ?? ()
#1  0x90669066 in ?? ()
#2  0x00000000 in ?? ()

函数名不再存在了?我做错了什么?

如果您不提供某些调试信息,调试器在单步执行程序集时可能会出现问题。可能是这样吗?我如何提供必要的信息?我已经在使用
-g
开关了,这些符号会在检查时显示出来,而且我可以在它们上打断它们,我实际上不记得了,但是有些东西。您可能需要考虑更改用户名,以便人们可以很容易地使用@用户名语法来引用您的名字。参数以获取.0文件的最大GDB信息是-GBD3,然后该文件将包含行号、符号名、函数名等。建议您仔细阅读gcc和gdb实用程序可能已损坏的堆栈?或者您是否有0xfd29f的函数?