debugging相关内容

gdb 可以中断隐式类方法吗?

编译器会生成一些类方法,如复制构造函数、析构函数等.是否可以在这些方法上设置 gdb 中断,例如,观察对象被复制或销毁的位置? 解决方案 gdb 可以中断隐式类方法吗? 是的,当然可以. (gdb) break MyClass::MyClass(const MyClass &)//复制时中断(gdb) break MyClass::~MyClass()//对象销毁时中断 就这 ..
发布时间:2022-01-20 20:46:19 C/C++开发

如何强制gdb在程序执行开始后立即停止?

我尝试在每个有意义的函数上设置断点,但程序在到达其中任何一个之前退出.有没有办法让程序从一开始就以逐步模式运行,这样我就可以看到发生了什么? 如果/usr/bin/id 很重要,我正在尝试调试它(我们有自定义插件,但它行为不端) 附:开始命令在这里对我不起作用(应该是评论,但我没有足够的代表) 解决方案 获取程序入口点地址,并在该地址处插入断点. 一种方法是创建信息文件, ..
发布时间:2022-01-20 20:44:34 其他开发

如何使用 GDBSERVER 在 Android 上调试应用程序?

我正在尝试调试我的应用程序通过 JNI 使用的本机共享库.我可以使用“gdbserver --attach pid"附加到正在运行的应用程序,但我需要在启动 gdbserver 命令时实际启动我的应用程序. 关于此主题的博客点击量达到一百万,但似乎没有一个人清楚地说明您如何启动应用程序.他们都说只输入“gdbserver 10.0.2.2:1234 ./MyProgram",但究竟什么是“M ..
发布时间:2022-01-20 20:44:04 移动开发

是否可以同时使用 gdb 和 qemu 调试 linux 用户空间程序和内核空间?

到目前为止,使用 gdb + qemu,我可以进入/跳过 linux 内核源代码.是否可以同时调试用户空间程序?例如,将程序从用户空间单步运行到内核空间,这样我就可以通过发出 info registers 来观察 qemu 监视器上寄存器的变化? 解决方案 最小的逐步设置 Mahouk 是对的,但这里有一个 全自动 QEMU + Buildroot 示例 假设你 已经知道如何使用 Q ..
发布时间:2022-01-20 20:43:40 其他开发

只有 gdb 在 ARM 上报告的回溯中的问号

我正在尝试在 ARM 上使用 gdbserver 调试软件以获取崩溃的回溯.不幸的是,我只得到问号.在任何地方,我都读到这个问题只是与缺少符号有关,但符号并没有从我的库中删除. 如果我尝试使用 file 命令在客户端加载符号,我会得到: 正在从 /libQtWebKit.so.4.7.2 读取符号...(未找到调试符号)...完成. 然后,当崩溃发生时: 程序收到信号SIG ..
发布时间:2022-01-20 20:43:32 C/C++开发

“没有命名的源文件"错误调试 Eclipse CDT

我有一个带有共享库(动态加载)的项目,我正在尝试调试它.我收到以下错误消息: 没有名为/home/username/Code/path/to/project/MyFile.cpp 的源文件. 在搜索了其他线程之后,我确保我正在使用 -g 进行编译,并且相应的文件夹位于调试配置的源路径选项卡上.奇怪的是它给出了正确的绝对路径:它引用的文件确实存在,所以我不明白为什么它认为它不存在. 有人知 ..
发布时间:2022-01-20 20:42:25 其他开发

如何将调试器附加到正在运行的 Perl 进程?

我有一个正在运行的 Perl 进程卡住了,我想用调试器戳进去看看有什么问题.我无法重新启动该过程.我可以将调试器附加到正在运行的进程吗?我知道我可以执行 gdb -p,但 gdb 对我没有帮助.我试过 Enbugger,但失败了: $ perl -e 'while (1) {}'&[1] 86836$ gdb -p 86836…附加到进程 86836.共享库的读取符号.完毕读取共享库的符号... ..
发布时间:2022-01-20 20:42:15 其他开发

将 GDB 与 Eigen C++ 库一起使用

我正在使用可从 http://eigen.tuxfamily.org/ 下载的 Eigen C++ 库.这是一个 C++ 库,用于更轻松地处理矩阵和数组.我使用 g++ 编译器和 gdb 进行调试.但是,我发现在使用 gdb 时我无法打印 Matrix 的内容(由 Eigen 提供). 解决方案 你必须安装一个 gdb 扩展,你可以在 eigen/debug/gdb/. 文件开头的注 ..
发布时间:2022-01-20 20:41:24 C/C++开发

您如何使用“目标远程"在 gdb 中重新开始运行程序?

当您在同一台计算机上对可执行文件执行常规 gdb 会话时,您可以发出运行命令,它会重新启动程序. 当您在嵌入式系统上运行 gdb 时,如使用命令 target localhost:3210,如何在不退出并重新启动 gdb 会话的情况下重新启动程序? 解决方案 您正在寻找 gdbserver 的多进程模式 和 设置远程执行文件文件名 ..
发布时间:2022-01-20 20:41:00 其他开发

如何比较 GDB 中存储的字符串变量?

我在 GDB 中有一个名为 x 的变量,我想将它与字符串进行比较. gdb $ print $x$1 = 0x1001009b0 “你好" 但与 的比较 如果 $x == "你好" 没用. 解决方案 正如@tlwhitec 指出的那样:你也可以使用内置的 $_streq(str1, str2) 函数: (gdb) p $_streq($x, "hello") 此功能不需要为 ..
发布时间:2022-01-20 20:39:40 其他开发

在 x86 上使用 GDB 而不调试符号?

如何使用 GDB 调试在 32 位 x86 处理器上没有调试符号的程序?检查函数参数、局部变量、解析指针对于知道如何做很有用.其目的并不是真正将其用于逆向工程,因为我有时只是懒得安装调试符号,并且知道如何从 gdb 中获取一些基本信息会很棒. 解决方案 开始,你可以做; gdb “随便"打破 __libc_start_mainr 这将在 libc 的 crt0 代码中设置一个断点,并允 ..
发布时间:2022-01-20 20:38:05 其他开发

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

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

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 中关闭布局 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 服务器开发