如何通过进程的回溯确定函数传递参数的值?

时间:2014-10-22 02:42:29

标签: c linux embedded

我有一个过程的回溯。并且我想确定调用跟踪中调用的一个函数的参数的值,我有.o文件并且我反汇编它,所以我有该特定函数的汇编程序,我该如何计算函数的值&# 39;通过回溯和汇编代码传递参数?它位于ARM平台上,我对ARM调用跟踪和汇编代码并不熟悉。

1 个答案:

答案 0 :(得分:0)

如果代码是用C语言编写的,则此信息不能仅从可执行映像中获得,原因很简单,C不会破坏函数名称符号以编码函数参数类型。

使用gdb进行简单的实验表明,如果使用调试标志-g编译C代码,gcc会将足够的信息放入可执行文件的gdb调试记录中,以便能够找出函数参数类型,并在回溯中显示函数参数。

但是,如果可执行文件未使用-g进行编译,则可执行文件中的所有内容都是函数名称及其地址,以及gdb可以显示的所有内容,从coredump回溯。

因此,如果您正在使用包含C代码的.o文件,而没有任何调试内容,那么没有什么可以显示函数参数是什么,