从崩溃信息中打印函数名称

发布于 2024-11-17 11:45:10 字数 277 浏览 4 评论 0原文

我的程序(在 Linux 上用 DMD(一种 D 编译器)编译的)崩溃了,并打印如下信息:

./program() [0x807aff8]
./program() [0x807aea9]

如何将函数的地址转换为其名称?我已经使用 -debug-g 编译了我的程序,因此它应该包含所需的调试信息,我只是不知道如何使用它。

(PS:这很简单,但我似乎找不到如何做到这一点。可能没有使用正确的搜索词)。

My program (which is compiled with DMD, a D compiler, on Linux) is crashing, and printing information like:

./program() [0x807aff8]
./program() [0x807aea9]

How can I convert the addresses of the functions to its names? I've compiled my program with the -debug and -g so it should include the required debugging information, I just don't know how to use it.

(PS: This is something simple but I can't seem to find how to do it. Probably not using the right search terms).

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

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

发布评论

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

评论(2

左耳近心 2024-11-24 11:45:10

查看 addr2line 实用程序

$ gcc -g s.c
$ addr2line 0x400855    
s.c:42

Have a look at the addr2line utility

$ gcc -g s.c
$ addr2line 0x400855    
s.c:42
以酷 2024-11-24 11:45:10

在 gdb 中运行您的应用程序,然后在崩溃后,输入 bt 来打印完整的回溯,这通常比仅发生崩溃的行要好得多。

Run your aplication inside gdb, then, after the crash, type bt to print the complete backtrace, which usually much better than just the line where the crash happened.

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