带“-ggdb1”和不带“-ggdb1”的 gcc 调试信息有什么区别?选项?

发布于 2024-09-27 05:45:26 字数 458 浏览 7 评论 0原文

默认情况下,gcc 会将符号表添加到可执行文件,因此 gdb 将获得可读的堆栈跟踪。

gcc 手册页中的 -ggdb1 选项的文档显示:

级别 1 产生最少的信息,足以在您不打算调试的程序部分中进行回溯。其中包括函数和外部变量的描述,但没有有关局部变量的信息,也没有行号。

...在我看来,这与仅调用 gcc 没有任何与调试相关的参数相同。但显然有额外的符号发出(.debug_frame.debug_str.debug_loc)。

那么到底有什么区别,使用 -ggdb1 编译与简单地不剥离可执行文件相比有什么好处吗?

By default, gcc will add symbol table to the executable, so gdb will get a readable stack trace.

Documentation for -ggdb1 option in gcc man page says:

Level 1 produces minimal information, enough for making backtraces in parts of the program that you don't plan to debug. This includes descriptions of functions and external variables, but no information about local variables and no line numbers.

...which looks to me the same as just calling gcc without any debug-related arguments. But there are clearly extra symbols emitted (.debug_frame, .debug_str, .debug_loc).

So what exactly is the difference, and is there any benefit of compiling with -ggdb1 as opposed to simply not stripping the executable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

百善笑为先 2024-10-04 05:45:26

找到 dwarfdump 实用程序(libdwarf 的一部分)并查看这些部分中发出的调试信息。然后自己决定使用 1 级调试信息进行编译与不剥离可执行文件之间是否有任何区别。 DWARF 规范也是免费提供的。

Find dwarfdump utility (part of libdwarf) and see what debug info is emitted in those sections. Than decide for yourself whether there is any difference between compiling with level 1 debug info and not stripping the executable. The DWARF specification is also freely available.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文