【发布时间】:2010-06-02 20:06:16
【问题描述】:
我最近在 Linux 上推出了一个新的工具链,包括 gcc 4.5.0 和带有黄金的 binutils 2.20。现在我对PGO这个新事物很好奇。虽然很清楚它如何与可执行文件一起工作,但我无法在共享库上找到答案。我通过 google 在 gcc 邮件列表中找到了两个未答复的帖子,仅此而已。
所以这就是我尝试过的: 只要我不标记 -fprofile-generate 一切都很好,并且我的 .so 由主程序 dlopen()'ed 并且可以完美运行。 当编译并与 -fprofile-generate 链接时,库被加载,一切正常,但是当我结束主程序时,我得到一个带有 coredump 的 sigsegv。
我将 corefile 提供给 gdb 并得到了这个:
#0 0x00000000 in ?? ()
No symbol table info available.
#1 0x1f32bc2f in ?? ()
No symbol table info available.
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
当然不会保存 .cdda 文件。
有什么想法吗?
菲利普
【问题讨论】:
-
你是如何运行 GDB 的?我猜你是这样做的:“gdb core”。改为这样做:“gdb exename core”。很有可能,您将获得更有意义的堆栈跟踪。或者,在 GDB 下从头开始运行可执行文件:“gdb exename”然后“run”。
-
gdb exename core 正是我运行 gdb 的方式。
标签: gcc profiling shared-libraries compiler-optimization