gdb相关内容

GDB 显示调用堆栈上函数地址的当前编译二进制文件

在 Visual Studio 中,您可以看到函数所在的位置,即在哪个编译的二进制文件中.例如: GDB 有命令吗? 如果你加载一个 dll,一个符号的多个版本可以加载两次.必须了解代码是在 .exe 中执行还是在已加载的 .dll 库之一中执行.Visual Studio 调试器在提供的屏幕截图中显示此信息(虽然它是针对 C#,但我只是从网站上复制了它). 当我使用 Visua ..
发布时间:2022-01-20 20:31:07 C/C++开发

GDB 错误消息 (GCC 4.7) (来自 macports)

我在启动 gdb 时收到这样的消息: $ gdb a.outGNU gdb 6.3.50-20050815(Apple 版本 gdb-1708)(2011 年 11 月 3 日星期四 21:59:02 UTC)版权所有 2004 Free Software Foundation, Inc.GDB 是自由软件,受 GNU 通用公共许可证保护,您是欢迎在某些条件下更改和/或分发它的副本.键入“显示复 ..
发布时间:2022-01-20 20:31:00 其他开发

GDB“无法打开共享对象文件"问题

我已经阅读了 gdb 说“无法打开共享对象文件"; 和 gdb 无法打开共享对象文件 并跟随说明. 我有一个链接到共享库文件 (/zzz/yyy/xxx.so) 的二进制文件.在我将 LD_LIBRARY_PATH 设置为 /zzz/yyy/ 并在没有 GDB 的情况下运行二进制文件后,它执行得非常好. 但是,当我尝试使用 GDB 调试这个二进制文件时,GDB 说: 加载共享库时 ..
发布时间:2022-01-20 20:30:39 服务器开发

为什么我在 GDB 上的断点有这个问题?GDB 停止

当调用函数 strcpy() 时,我尝试在 GDB 上设置断点,但 GDB 停止,我不知道如何找到错误,我是 GDB 新手我想研究二进制利用,所以我正在阅读的论坛对此没有任何解释,这是输出; (gdb) 反汇编 main函数 main 的汇编代码转储:0x00000000000011c9 : endbr640x00000000000011cd :推送rbp0x0000000000 ..
发布时间:2022-01-20 20:30:32 其他开发

在 gdb 中使用非路径名启动应用程序

我正在尝试在 GDB 中启动旧版应用程序,它要求它的 argv[0] 值不包含除字母数字字符以外的任何内容. 每当我在 GDB 中启动程序时,它似乎会在运行程序之前将名称扩展为完整路径,所以我收到如下错误(因为它无法处理斜杠): “找不到/home/user/myapp ..." 是否可以使用相对路径在 GDB 中运行程序,以便它只会看到“myapp"? 解决方案 Gdb ..
发布时间:2022-01-20 20:30:23 其他开发

静态链接系统库、libc、pthreads,以帮助调试

我试图避免 Stackoverflow 条目中描述的情况:调试客户盒子上生成的核心文件.如果我静态编译所有库,我会避免在核心转储时始终收集共享库吗?我基本上想处于一种可以使用 gdb 加载核心文件并检查崩溃的应用程序的情况. 如果我走静态链接我们需要的所有库的路线,我应该注意什么.我认为 glib 和 pthreads 可能会导致最大的问题. Valgrind 会不再有用吗?如果我针对 ..
发布时间:2022-01-20 20:30:17 服务器开发

Linux 不尊重 SCHED_FIFO 优先级?(正常或 GDB 执行)

TL;DR 在多处理器/多核引擎上,可以在多个执行单元上调度多个 RT SCHED_FIFO 线程.因此优先级为 60 的线程和优先级为 40 的线程可以同时运行在 2 个不同的内核上. 这可能违反直觉,尤其是在模拟嵌入式系统时(通常像今天一样)在单核处理器上运行并依赖严格的优先级执行. 请参阅此帖子中的我的其他答案以获取摘要 原始问题描述 即使使用非常简单的代码来让 ..
发布时间:2022-01-20 20:30:11 服务器开发

在 GDB 编译代码命令中,哪些语言结构的行为与它们在原始源代码中的表现完全相同?

GDB 最近引入了 compile 命令以在运行时注入代码,请参阅 this answer要求和一个最小的例子. 但我注意到有一些东西好像我在当前位置的原始源代码中写的一样不起作用: 编译代码返回;不结束当前函数,只结束注入的代码. 假设:代码在一个新的堆栈框架中运行,但其中局部变量仍然可见. 寄存器修改失败,例如: 编译代码 asm volatile ("mov $0x ..
发布时间:2022-01-20 20:30:03 其他开发

无法追踪的奇怪 GDB 错误

我在 gdb 中遇到了这个奇怪的错误,我无法跟踪确切的代码行来跟踪错误.有人知道这种类型的错误吗?这是我在 gdb 中得到的内容 *** -[CALayer sublayers]:消息发送到释放的实例 0x911c2a0(gdb) po 0x911c2a0程序收到信号 SIGTRAP,跟踪/断点陷阱.0x020993a7 在 ___forwarding___ ()正在调试的程序在从 GDB 调用 ..
发布时间:2022-01-20 20:29:49 移动开发

GCC 调试器堆栈跟踪显示错误的文件名和行号

我正在尝试将一个相当大的 C++ 项目移植到在 Mac OS X 上使用 g++ 4.0.我的项目编译没有错误,但我无法让 GDB 正常工作.当我通过在 GDB 命令行上键入“bt"查看堆栈时,显示的所有文件名和行号都是错误的. 例如,根据 GDB 堆栈跟踪,我的 main() 函数应该在 Mac OS X SDK 的 stdexcept 中,这没有任何意义. 什么会导致 GDB 出现 ..
发布时间:2022-01-20 20:29:42 C/C++开发

gdb 在 malloc 中冻结

假设我有一些这样的 C 程序: #include #include 主函数(){而(真){无效 *p = malloc(1000);免费(p);}返回0;} 我用 gdb 附加到它,就像这个 gdb a.out PID.gdb 成功附加到它,但我尝试执行类似 call printf("bla bla bla") gdb 之类的操作,如果我按下 Ctrl ..
发布时间:2022-01-20 20:29:35 服务器开发

GDB C++ - 在查看核心转储时检查 STL 容器?

我正在 gdb 中调试我的程序的核心转储(事后分析).我打开它:gdb [程序名称] [核心名称] 但是,当我尝试检查 STL 向量时,例如打印 vec->size()或者打印 vec->at(0) 我得到了错误 “如果没有调试过程,您将无法做到这一点" 我只是想检查这些容器的内容和大小.有什么方法可以将虚拟进程附加到核心转储 gdb 检查,以便我可以做到这一点? 解 ..
发布时间:2022-01-20 20:29:07 C/C++开发

vector.size() 的 GDB 值错误

一个简单的 vector.push_back() 会导致我的代码出现一些错误: #include 使用命名空间标准;int main(int argc, const char *argv[]){向量堆;stack.push_back(1);stack.push_back(1);//stack.size() 之后变成 467369971stack.push_back(1) ..
发布时间:2022-01-20 20:28:46 C/C++开发

GDB检查数据显示格式从8字节到4字节

这是我的gdb 的显示 (gdb) x/20bx 0xbffff2c00xbffff2c0: 0xd4 0xf2 0xff 0xbf 0x16 0x8f 0x04 0x080xbffff2c8: 0x05 0x00 0x00 0x00 0x00 0x00 0x0c 0x420xbffff2d0: 0x6b 0x00 0x00 0x00 是否可以将其更改为连续 4 个字节? 解决方案 ..
发布时间:2022-01-20 20:28:40 其他开发

如何使用“手表"?广发银行?

我试图通过命令“watch a"来观察“int a"的变化.但是程序并没有停止,当它变为 12 时.为什么? /* 文件:test.c */#include #include int main(int argc, char** argv){printf("你好世界\n");int a = 12;a = 10;返回0;} 解决方案 指定您的平台、GDB 版 ..
发布时间:2022-01-20 20:28:24 其他开发

如何在 gdb 中“打印"/评估 C++ 模板函数

我想知道是否可以使用 gdb print 命令来评估 c++ 模板函数的结果.在下面带有简单 id 函数的代码中,我尝试 print id(x) 的结果,但它好像 id 或 id 从未存在过.我使用的代码如下,用 g++ -std=c++11 -g test7.cpp 编译: templateT id(T x) {返回 x;}int main() {诠释 i = 0;我 = 我 + 1;} ..
发布时间:2022-01-20 20:28:07 C/C++开发

使gdb在成功终止时自动退出?

我使用了一个调试脚本,它通过调试器连续运行多个相关进程.我目前正在使用 -x 自动执行几个命令(例如 run).当被调试的进程成功终止时,如何让 gdb 自动退出? 将 quit 命令添加到命令文件将导致该命令不仅在成功终止时被处理,而且当错误也发生时(我宁愿在那个时候接管). 这里是正在发生的事情的摘录: + gdb -return-child-result -x gdbbatch -- ..
发布时间:2022-01-20 20:27:49 服务器开发