了解C++程序的 GDB 语法
Understanding GDB syntax for C++ program
执行命令x/64ga $rsp
后,我将其作为行输出之一:
<Hex-addr-val> <Hex-addr-val> <Hex-addr-val> <Class_Name::Foo(Data_Type const&)+662>
所以我理解那行上的所有内容,除了最后的"+662"部分。这个数字相对于函数意味着什么?崩溃时是正值吗?还是别的什么?
这个数字相对于函数意味着什么?
这意味着在位置$rsp+24
GDB 找到了一个看起来像地址的值,该地址在代码中指向 662 字节以进行Class_Name::Foo()
。
这可能是巧合,也可能是该地址被推送到堆栈上(例如,因为Foo()
调用了其他函数(。
使用x/i '&Class_Name::Foo(Data_Type const&)+662-5
可能表明该地址有一条CALL
指令,这将强烈表明这不仅仅是一个随机的巧合。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 助记符和指向成员语法的指针
- 有人能分解一下这个c++模板的语法吗
- C++避免重复声明的语法是什么
- QMetaObject invokeMethod的基于函数指针的语法
- 当在带有Eigen的C++中使用GDB时,我如何才能看到更多的大矩阵
- 如何找出GDB的SIGTRAP核心转储的根本原因
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- gdb错误:Backtrace已停止:上一帧与此帧相同(堆栈已损坏?)
- 使用vscode调试时,GDB意外退出
- 单独定义模板化嵌套类方法的正确语法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 错误 C2760:语法错误:映射迭代器上意外的标记"标识符",预期的";"
- 为什么我会收到错误 C2143 语法错误:缺少"*"之前的';'?
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 使用基类指针调用基类的值构造函数的语法是什么?
- 很好的语法来获取对向量/数组数据的大小引用?
- 了解C++程序的 GDB 语法