3

我想转储我的程序的堆栈跟踪,作为backtrace[3]中演示的示例,但是我得到了下面的结果。

我正在使用linux 2.6arm-linux-gcc 4.3.2

跑步:
arm-linux-gcc prog.c -o prog -rdynamic

结果是:

backtrace() 返回 1 个地址

/lib/ld-linux.so.3 [0x40025000]

你能帮我解决这个问题吗?

谢谢


我对 gcc 没有任何问题,但是我无法使用 arm-linux-gcc 获得跟踪。

4

1 回答 1

1

根据GCC ARM Options 文档,您需要将-mapcs-frame选项传递给 GCC 以在 ARM 平台上生成堆栈帧。

-mapcs-frame
为所有函数生成一个符合 ARM 过程调用标准的堆栈帧,即使这对于正确执行代码并不是绝对必要的。使用此选项指定-fomit-frame-pointer会导致不为叶函数生成堆栈帧。默认值为-mno-apcs-frame

在对我的Linux 特定回答How to generate a stacktrace when my gcc C++ app crash的评论中向我指出了这一点,您可能也会发现它很有用。

于 2013-03-05T15:40:29.380 回答