无法在 gdb 中创建断点
Couldn't make breakpoint in gdb
我使用 openSUSE 作为我的操作系统,和 gdb 7.5。我想用 gdb 和断点调试我的程序。但是当我创建一个断点,然后运行我的程序时,gdb 通知我如下:
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".cpp"
在我的所有程序中都是一样的。此外,当运行到断点时,程序根本不会停止。谁能告诉我出了什么问题?
我下载了最新的gdb并安装它,以前的消息消失了,但是当运行gdb时它告诉我:
warning: Could not load shared library symbols for linux-gate.so.1. Do you need "set solib-search-path" or "set sysroot"?
如何解决这个问题?
gdb 7.5 中存在一个已知错误,即当源文件名以十进制数字开头时,调试器无法解析线规范。有关详细信息,请参阅此消息。
尝试重命名文件并从分发存储库更新 gdb。如果错误仍然存在,请向您的发行版维护者提交错误。
查看提交给 bugzilla 的错误报告中的示例会话gdb
。
(gdb) b 3
Breakpoint 1 at 0x4004c3: file 2.c, line 3.
(gdb) r
Starting program: /home/teawater/tmp/a.out
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
Error in re-setting breakpoint 1: malformed linespec error: unexpected string, ".c"
我使用"b + 行号"
这将定义相对于当前行的断点,请参阅 als 指定位置。使用下面评论中的代码,以下内容将起作用:
$ gdb ./main
(gdb) b +5
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
(gdb) run
[New Thread 1528.0x1930]
Breakpoint 1, main () at main.cpp:5
5 while(scanf("%d%d",&a,&b)!=EOF)
除非有充分的理由指定相对行号,否则我建议您使用绝对行号或函数名称:
(gdb) b main
Breakpoint 1 at 0x401395: file main.cpp, line 3.
(gdb) b main.cpp:6
Breakpoint 1 at 0x40139c: file main.cpp, line 6.
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 如何创建一个空的全局类并在启动时实例化它
- 无法创建抽象类的实例
- 链接到自行创建的dll失败
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- GDB:在 C++ 中的类函数上创建一个断点
- 视觉对象C++创建动态数据断点
- 无法在 gdb 中创建断点
- 不能使用gdb在文件中创建断点