用汇编语言解释调试信息

时间:2015-05-30 09:21:17

标签: debugging assembly

for F in alcatelS*.tar; do
    tar -xvf "$F" 
done

我对汇编语言不熟悉,尖线表示什么样的问题?

1 个答案:

答案 0 :(得分:2)

我将从您指向的那一行开始。

   0x00473a36 <+14>:    mov    0x8(%ebp),%eax

该指令将传递给您的函数的第一个参数(您当前正在检查的函数)并将该值存储到%eax

=> 0x00473a39 <+17>:    mov    (%eax),%edx

此指令现在假设%eax中的值是应用程序允许的地址空间中存在的有效地址。它获取该地址的32位值,并将该值放入%edx

可能发生的问题是,如果您传递此函数的第一个参数和无效地址(不在您的应用程序允许的地址空间内的地址)。您可以获得分段错误,例如,如果发生这种情况,或者可能只是未定义的行为。

如果您想进一步检查它,可以在此时查看%eax的值,看看它是否看起来像是一个合理的地址。或者转到调用此函数的源代码,并检查作为函数的第一个参数传递的内容,并确定它是否是指向应用程序数据的有效指针或来自堆的数据妥善分配。