有没有一种方法可以检索C程序的完整程序集执行跟踪



我有几个C程序,我基本上想反汇编它们。我使用objdump,但我意识到这是静态反汇编。是否存在按顺序执行指令的程序的完整程序集级跟踪?我在x86-64上运行。

有没有办法在汇编级检索C程序的全栈跟踪/执行跟踪?

调用堆栈可能根本不存在。一些C实现可以(在一些的简单情况下(内联每个函数调用并在寄存器中工作(但Rice定理表明这并不总是可能的(。这可能发生在最近的GCC进行全程序链接时间优化时(例如,使用gcc -O3 -flto -fwhole-program调用编译和链接步骤(

但是,如果您使用Linux/x86-64,并且希望在运行时检索调用堆栈,请考虑使用Ian-Taylor的libbacktrace。它是一些最新GCC编译器的一部分。

是否可以获得按顺序执行的指令的程序的完整汇编级跟踪?

或者,使用和/或修补一些处理器模拟器,如Qemu。

最新更新