gdb相关内容

gdb 可以使函数指针指向另一个位置吗?

我会解释: 假设我有兴趣替换某个应用程序使用的 rand() 函数. 所以我将 gdb 附加到这个进程并让它加载我的自定义共享库(它有一个自定义的 rand() 函数): call (int) dlopen("path_to_library/asdf.so") 这会将自定义的 rand() 函数放置在进程的内存中.但是,此时符号 rand 仍将指向默认的 rand() 函数.有没有 ..
发布时间:2022-01-20 20:34:23 其他开发

如何使用GDB查找一个内存地址对应什么函数

我正在使用 google 的堆检查器来追踪内存泄漏.它给了我一个堆栈跟踪,例如: 从以下位置分配的 1 个对象中泄漏 21 个字节:@ 0xf6088241@0xf60890d2@ 0xf6089246@ 0x8054781@ 0x8054862@0xf684ee76@0xf684f343@ 0x804be4c@ 0x80544f6@0xf5e52bb6@ 0x804b101 如何确定这些内存 ..
发布时间:2022-01-20 20:34:14 C/C++开发

如何使用 GDB 7.x 查看 STL 容器的内容

我一直在使用宏解决方案,如 此处这里.但是,提到了如何在没有宏的情况下查看它们.我指的是 GDB 版本 7 及更高版本. 有人能说明一下吗? 谢谢 解决方案 从SVN获取python查看器 svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python 将以下内容添加到您的 ~/.gdbinit python导入系统sys.path ..
发布时间:2022-01-20 20:34:06 C/C++开发

如何创建套接字类型的特殊文件?

我需要为 kgdb-gdb 远程连接创建串口套接字. 就像 mkfifo 在你的系统上创建一个 FIFO,我们如何创建套接字文件? 解决方案 如果您尝试编写使用套接字的应用程序,@cidermonkey 接受的答案中的链接非常棒.如果你真的只是想创建一个,你可以在 python 中完成: ~]# python -c "import socket as s; sock = s.soc ..
发布时间:2022-01-20 20:33:47 服务器开发

在 Linux 上的 gdb 中加载核心文件时,如何在目录前面添加库路径

我在无法直接访问的远程系统上生成了一个核心文件.我还有来自远程系统的库文件的本地副本,以及崩溃程序的可执行文件. 我想在 gdb 中分析这个核心转储. 例如: gdb path/to/executable path/to/corefile 我的库在当前目录中. 在过去,我看到调试器通过提供选项“-p"来实现这一点.或“-p/=.";所以我的问题是: 在 gdb 中分析核 ..
发布时间:2022-01-20 20:33:41 服务器开发

永久更改 GDB 中的反汇编风格

如何永久更改 GDB 中的反汇编风格.我试过:set disassembly-flavor intel 在 GDB 中,但是当我稍后启动 GDB 时,它仍然有 att 的味道. 解决方案 gdb 启动时会执行一个 ~/.gdbinit 文件,如果存在的话;您应该可以添加该行 设置反汇编风格intel 给它. ..
发布时间:2022-01-20 20:33:33 服务器开发

gdb:找不到新线程:一般错误

当我对加载链接到 pthread 的 .so 的程序运行 GDB 时,GDB 报告错误“找不到新线程:通用错误". 请注意,我运行的可执行文件未与 pthread 链接. 有什么线索吗? $ gdb --args lua -lluarocks.requireGNU gdb (GDB) 7.0-ubuntu版权所有 (C) 2009 Free Software Foundation, ..
发布时间:2022-01-20 20:33:28 其他开发

你如何使用gdb?

我决定了解我们的 C/C+ *nix 实践者如何使用 gdb 调试器. 这是我通常使用的: b - break filename.c:line #, function, filename.cpp:function, className::Member n, c, s -- 下一步继续 gdb程序名=>设置断点==>运行[参数列表](我这样做是为了在程序启动前设置断点) l - 列 ..
发布时间:2022-01-20 20:33:03 C/C++开发

macOS Mojave:如何实现协同设计以启用调试(gdb)?

从 10.5 开始,围绕 macOS 的协同设计问题有很多主题.我想要实现的是,让 Geany 使用 GNU 调试器 (gdb).在 geany 中可以找到调试器,但(已经非常清楚)错误消息是: 来自调试器后端的错误消息:无法找到进程 ID 39847 的 Mach 任务端口:(os/kern) 失败 (0x5).\n(请检查 gdb 是否经过代码签名 - 请参阅 taskgated(8))无法 ..
发布时间:2022-01-20 20:32:46 其他开发

gdb:如何打印当前行或查找当前行号?

list 命令打印一组行,但我需要一行,我在哪里以及可能发生错误的位置. 解决方案 我在调试时确实得到了相同的信息.虽然不是在我检查堆栈跟踪时.我认为您很可能会使用优化标志.检查此 链接 - 相关的东西. 尝试使用 -g3 进行编译,删除任何优化标志.那么它可能会起作用.HTH! ..
发布时间:2022-01-20 20:32:29 其他开发

调用 gdb 自动将参数传递给正在调试的程序

我想编写一个脚本,(在某些条件下)将执行 gdb 并使用一组参数 Y 自动运行一些程序 X.一旦程序完成执行,用户应该留在 gdb 的提示符下,直到他/她明确退出它. 一种方法是让脚本将运行命令和参数 Y 输出到某个文件 F,然后让脚本像这样调用 gdb: gdb X ..
发布时间:2022-01-20 20:32:18 其他开发

使用 Cygwin 可执行文件中的堆栈转储

所以我写了错误的代码,偶尔会崩溃......并创建了一个堆栈转储文件. 使用 addr2line 我可以通过将地址解码为 1 来弄清楚程序是如何到达崩溃点的.是否有替代工具可以使用堆栈转储来简化调试?有没有办法在 Insight/Gdb 中加载这些信息? 解决方案 您可以指示 Cygwin 在发生故障时及时启动您的 gdb 调试器.为此,请将 error_start=action 添 ..
发布时间:2022-01-20 20:32:07 其他开发

将类转储信息导入 GDB

有没有办法将 class-dump 的输出导入 GDB? 示例代码: $ 猫 >测试.m#include #import @interface 测试类:NSObject+ (int)randomNum;@结尾@implementation 测试类+ (int)randomNum {返回 4;//由公平掷骰子选择.//保证是 ..
发布时间:2022-01-20 20:32:01 移动开发

如何显示结构在 GDB 中具有哪些字段?

我在我的 GDB(调试器)会话中发现了一个结构(称为 ngx_http_variable_value_t),我想打印它在控制台中的字段. 这可能吗? 解决方案 您可以使用 GDB 命令 ptype 打印出结构或类的定义. 此外,使用 ptype/o 打印结构中所有字段的偏移量和大小(如 pahole). ..
发布时间:2022-01-20 20:31:55 其他开发

GCC -g 与 -g3 GDB 标志:有什么区别?

在使用 gcc 或 Clang 编译 C 源代码时,我总是使用 -g 标志为 gdb 生成调试信息. gcc -g -o helloworld helloworld.c 我注意到有些人推荐-g3.-g 和 -g3 标志之间有什么区别?-g和-ggdb还有区别吗? 解决方案 来自 文档: -g 以操作系统的本机格式(stabs、COFF、XCOFF 或 DWARF 2 ..
发布时间:2022-01-20 20:31:38 其他开发