gpt4 book ai didi

c++ - 如何使用 GDB 在 operator< 上设置断点

转载 作者:太空狗 更新时间:2023-10-29 23:45:53 36 4
gpt4 key购买 nike

基本上就是标题所说的。我有一个功能:

bool operator< (... lhs, ... rhs)

我想打破。 'b operator<(...)' 给我错误:

malformed template specification in command

如何阻止 GDB 认为 < 是模板开启符?我也试过按行号设置断点,但是这个定义在头文件中,出于某种原因,GDB 认为头文件中不存在行号。

GDB 6.8

最佳答案

您可以先打印所有出现的运算符 < ,获取您感兴趣的函数的地址并在其上设置断点。

注意:无论您的函数定义在 .h 中如何,此技术都有效。或 .cpp只要你用 g++ 编译过的文件使用 -g

$ gdb test

(gdb) p 'operator <'
$1 = {bool (MyClass &, MyClass &)} 0x4009aa <operator<(MyClass&, MyClass&)>

(gdb) b *0x4009aa
Breakpoint 1 at 0x4009aa: file test.h, line 5.

(gdb) r
Starting program: /home/agururaghave/.scratch/gdb-test/test

Breakpoint 1, operator< (obj1=..., obj2=...) at test.cpp:6
6 friend bool operator < ( MyClass &obj1, MyClass &obj2 ) {

我用下面的代码进行了测试:

/* test.h */
#include <iostream>
class MyClass {
public:
friend bool operator < ( MyClass &obj1, MyClass &obj2 ) {
std::cout << "operator <" << "\n";
return true;
}
};

/* test.cpp */
#include "test.h"
int main() {
MyClass myObj1;
MyClass myObj2;

bool result = myObj1 < myObj2;

std::cout << result << "\n";

return 0;
}

关于c++ - 如何使用 GDB 在 operator< 上设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15301924/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com