gpt4 book ai didi

c - 没有加载调试符号时,gdb 如何解释 `main`?

转载 作者:太空宇宙 更新时间:2023-11-04 03:05:26 25 4
gpt4 key购买 nike

<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /root/ctest/printf...(no debugging symbols found)...done.
(gdb) disas main
Dump of assembler code for function main:
0x0000000000400498 <main+0>: push %rbp
0x0000000000400499 <main+1>: mov %rsp,%rbp
0x000000000040049c <main+4>: sub $0x10,%rsp

当没有加载调试符号时,gdb 如何解释 main

最佳答案

GDB 不会“解释”main

如果您的问题是“GDB 如何知道 main 在哪里”,答案是:“因为它的地址在符号表中”(参见 nm/root/ctest/printf 的输出) .在 UNIX(与 Windows 不同)上,不需要调试符号在可执行文件(或共享库)中具有函数和全局变量名称——默认情况下会保留它们(以使调试更容易)。如果你想隐藏你的 main,你可以运行 strip printf 从可执行文件中删除它(和所有其他符号)。

对于你的第二个问题,main 没有被破坏,因为它有 extern "C" 链接。它必须具有该链接,以便可以从程序集调用它(它由 C 运行时启动调用,通常是 crt1.o)。

关于c - 没有加载调试符号时,gdb 如何解释 `main`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com