了解C++程序的 GDB 语法

Understanding GDB syntax for C++ program

本文关键字:GDB 语法 程序 C++ 了解      更新时间:2023-10-16

执行命令x/64ga $rsp后,我将其作为行输出之一:

<Hex-addr-val> <Hex-addr-val> <Hex-addr-val> <Class_Name::Foo(Data_Type const&)+662>

所以我理解那行上的所有内容,除了最后的"+662"部分。这个数字相对于函数意味着什么?崩溃时是正值吗?还是别的什么?

这个数字相对于函数意味着什么?

这意味着在位置$rsp+24GDB 找到了一个看起来像地址的值,该地址在代码中指向 662 字节以进行Class_Name::Foo()

这可能是巧合,也可能是该地址被推送到堆栈上(例如,因为Foo()调用了其他函数(。

使用x/i '&Class_Name::Foo(Data_Type const&)+662-5可能表明该地址有一条CALL指令,这将强烈表明这不仅仅是一个随机的巧合。