gdb相关内容

使用 gdb 进行调试 - 最佳实践

我是 GDB 的初学者,我让它正常工作.但是,我想知道如何在大型项目中使用它.我有一个项目,其中使用 makefile 和 g++ 完成构建.为了让 GDB 工作,我们需要使用调试符号进行编译,对吧(g++ -g 文件)? 问题 我是否需要在 makefile 中创建一个类似“debug"的新目标,以便我可以像 make debug 这样进行调试构建.这是最佳做法吗? 假设,我只需要 ..
发布时间:2022-01-20 20:37:11 C/C++开发

已加载文件名的地址丢失 [GDB]

我有以下示例代码 #include主函数(){整数 1,数字 2;printf("请输入两个数字\n");scanf("%d",&num1);scanf("%d",&num2);诠释我;for(i = 0; i 我用 gcc 的 -g 选项编译了这段代码. gcc -g file.c 生成单独的符号文件 objcopy --only-keep-debug a.out a.out.sy ..
发布时间:2022-01-20 20:37:02 服务器开发

使用模板调试 C++ 代码,使用 gdb 调试 STL

这里的 gdb 用户如何看待它在使用模板和 STL 调试代码方面的功能? 您是否使用任何技巧使调试更简单?也许是一些 Python 脚本?或者你对gdb目前的方式满意吗(6.x版,7.x还没试过)? 谢谢. 解决方案 我假设您的意思是更好地可视化 STL 代码(而不是 调试模式 提供安全的迭代器和额外的运行时检查).我不确定你是否看过这些帖子: GNU GCC 文档:调试 ..
发布时间:2022-01-20 20:36:48 C/C++开发

有人成功调试过 iPhone 的单元测试吗?

我在 如何在 Cocoa 中调试单元测试 或 这里是 ADC 页面.但我无法让调试适用于 iPhone 应用程序目标.我可以启动并运行测试,它们在构建过程中运行,但我需要调试测试一些更复杂的故障. 解决方案 您可以考虑将测试移至 GHUnit,它们在普通应用程序目标中运行,因此调试很简单. ..
发布时间:2022-01-20 20:36:40 移动开发

如何在 virtualenv 中使用 gdb python 调试扩展

我正在运行 ubuntu,并安装了 python-dbg 包.尝试直接使用已安装的版本时,一切正常: $ gdb python2.7-dbgGNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04---x 剪断了 x---从/usr/bin/python2.7-dbg 读取符号...完成.(gdb) r启动程序:/usr/bin/pyt ..
发布时间:2022-01-20 20:36:33 Python

gdb:寄存器值为 0xffaa 时的断点

我可以在 gdb 中为寄存器值设置断点/观察点/smth 吗? 我想在 $eax 的值为 0x0000ffaa 时中断. 是否可以使用 gdb 或 dbx 或任何其他 unix 调试器? 解决方案 是的,在 gdb 中你可以像这样设置观察点: 观看 $eax == 0x0000ffaa 但它依赖于目标可用的观察点支持.您应该注意,这可能会显着减慢执行速度. 如果您想在 ..
发布时间:2022-01-20 20:36:26 服务器开发

我可以从地址读取/写入 gdb 中断吗?

可能重复: 我可以在 GDB 中的“内存访问"上设置断点吗? 我在内存中有一个特定位置正在损坏,我希望能够准确地看到写入该位置的时间.有什么方法可以让 gdb 中断对该特定地址的内存访问? 解决方案 是的. 使用观察点: watch - 仅在写入时中断(并且仅在值更改时) rwatch - 读取时中断,并且 awatch - 读/写中断. 来自一些互联网资源的更详细的 ..
发布时间:2022-01-20 20:36:20 C/C++开发

如何打印<不完整的类型>gdb 中的变量

有时 gdb 会为某些类型的变量打印“不完整类型".这是什么意思?我们如何才能看到这个价值? 解决方案 表示该变量的类型指定不完整​​.例如: struct hatstand;结构帽子架 *foo; GDB 知道 foo 是一个指向 hatstand 结构的指针,但该结构的成员尚未定义.因此,“不完整类型". 要打印该值,您可以将其转换为兼容的类型. 例如,如果你知道 fo ..
发布时间:2022-01-20 20:36:11 其他开发

如何在 gdb 中关闭布局 SRC 窗口?

在使用 GDB 调试时,我通常使用 layout src 来检查我的代码.但是当我打开它时,我不知道如何关闭它.好像还有其他布局,打开新布局时会拆分窗口,但还是找不到合并拆分窗口的命令. 解决方案 在调试会话期间,您可以随时离开或进入 TUI.例如,您可以使用 ctrl+x a 键绑定来做到这一点.25.2 TUI 键绑定. ..
发布时间:2022-01-20 20:36:03 其他开发

什么是 DDD(数据显示调试器)的良好 unix 替代品?

我正在使用 vim 在 linux 上开发 c 并使用 ddd 进行调试.但是我发现 ddd 在这台机器上的滚动性能很差,所以有时使用起来非常令人沮丧. 我喜欢 ddd 与 gdb 命令集相当接近的映射方式,因为这意味着我可以在选择时自由使用 gdb 命令,但使用 gdb 本身不是一个选项,因为它不能很好地显示来源. 谁能推荐一个不错的 ddd 替代方案?我不是在寻找 IDE,而只是在 ..
发布时间:2022-01-20 20:35:47 服务器开发

在 LLDB 中将反汇编风格设置为 Intel

有没有办法像在 LLDB 中的 GDB 中那样设置反汇编风格,以便它吐出 Intel 风格的汇编而不是 AT&T 风格? set disassembly-flavor intel # GDB 但对于 LLDB. 解决方案 不,还没有.Intel 格式反汇编是我确信最终会实现的功能,但我认为今天没有人在研究它. 更新:选择程序集样式的功能已添加到树源的顶部(v. http://ll ..
发布时间:2022-01-20 20:35:31 其他开发

如何在 gdb 中列出类方法?

我一直在谷歌上搜索并检查 gdb 手册,但似乎无法找到我正在尝试做的事情的答案. 有没有办法让 gdb 打印出给定类类型的所有方法的列表?print 命令似乎只显示数据成员和字段,没有显示任何方法. 此外,更进一步,有没有办法打印给定基 * 指针的所有正确虚拟方法?比如说: 结构 A{虚空 foo() {}};结构 B:公共 A{无效 foo() {}};主函数(){A *b = 新 ..
发布时间:2022-01-20 20:35:22 C/C++开发

GDB 断点

我有一个断点列表,我想在每次调试特定程序时添加这些断点. 有没有办法可以将所有断点信息放在一个文件中并在每个调试会话开始时使用它?换句话说,在我发出“运行"命令之前,我可以向 GDB 提供一个包含断点信息的脚本文件吗? 解决方案 来自 ma​​n gdb(1): -x 文件从文件 file 执行 GDB 命令. 然后您可以将断点放在一个文件中: break [file:]函数 ..
发布时间:2022-01-20 20:35:08 其他开发

在 Clion 的调试器中,如何显示一个 int 数组的全部内容

现在它只显示数组的第一个元素,但我想要查看数组中的所有元素.我认为 Clion 正在使用 GDB. 编辑:我特指堆上的数组.堆栈上的数组可以可视化. 解决方案 很遗憾,CLion 目前不支持该功能.正如 JetBrains 员工 建议的那样,您可以使用解决方法.在 Evaluate/Watches 窗口中使用以下表达式: (MyType[128])myArray 您可以使用任意数 ..
发布时间:2022-01-20 20:35:01 C/C++开发

Solaris 核心转储分析

我在 Solaris 中使用 pstack 分析核心转储文件 我还能如何分析来自 solaris 的核心转储? 可以使用哪些命令来做到这一点? 从转储中可以获得哪些其他信息? 解决方案 您可以使用 Solaris 模块化调试器、mdb 或 dbx.mdb 附带 SUNWmdb(或 SUNWmdb x,对于 64 位版本)软件包. 核心文件是您正在运行的进程在崩溃时的 ..
发布时间:2022-01-20 20:34:45 其他开发

使用 GDB 调试从 shell 脚本调用的 C++ 程序

我有一个极其复杂的 shell 脚本,它在其中调用一个我想通过 GDB 调试的 C++ 程序.将这个 c++ 程序与 shell 分开是非常困难的,因为它有很多分支和很多环境变量设置. 有没有办法在这个 shell 脚本上调用 GDB?看起来 gdb 需要我直接调用 C++ 程序. 解决方案 有两种选择: 直接在 shell 脚本中调用 GDB.这意味着您没有重定向标准输入和标 ..
发布时间:2022-01-20 20:34:37 C/C++开发