gdb相关内容

gdb 地址和“真实"地址之间的区别地址?

如果我在 gdb 中运行一个 C/C++ 程序(在使用 -g 标志编译之后)并检查某些变量、参数...等的地址,然后我在 gdb 之外运行它(使用 ./) 这些地址会和我在 gdb 中看到的一样吗?如果它们不同,它们通常是相似的还是完全不同的? 我问这个是因为我有一个缓冲区溢出程序,它可以在 gdb 中完美运行(带断点和不带断点),但是当我尝试在 gdb 之外运行它时它不起作用. 解决 ..
发布时间:2022-01-20 20:22:46 C/C++开发

GDB 说“没有符号表",但 nm 显示文件有调试符号

我正在尝试使用 GDB 调试一个简单的 C 项目,但无论我如何编译,GDB 似乎都找不到该程序的调试符号. 当我将程序加载到 GDB 中时,它声称已成功读取符号,因为它会打印 从/home/edward/读取符号...完成. 但是,当我运行程序时,由于分段错误而中断,然后键入 info locals,它说 没有可用的符号表信息. 另外,bt 显示执行在我编写的 ..
发布时间:2022-01-20 20:22:40 其他开发

设置 GDB 硬件观察点/如何设置软件观察点

一个较早的问题解释说,在 x86 上,正在监视的对象的大小受调试寄存器的限制.正如所料,我可以“观察"一个双变量.但是我不能看双数据成员,例如, 观看 pObject->dPrice 生产 硬件观察点 1:pObject->dPrice 但是当你尝试继续执行时,它会说 无法插入硬件断点:您可能请求了太多的硬件断点/观察点. 即使这是唯一断点/观察点. 我很好奇为什么会这样 ..
发布时间:2022-01-20 20:22:34 服务器开发

Mac C++/eclipse 无法调试:启动命令时出错:gdb --version

我在 mac 上使用 c++/eclipse kepler,我无法调试任何项目.错误是“启动命令时出错:gdb --version"除此之外,我可以使用其他库构建和运行我的代码. 我搜索了一个与我的问题类似的网站:Debugger for C++ eclipse 给出以下错误.'Launching program name' 遇到了...启动命令时出错:gdb --version 但是 ..
发布时间:2022-01-20 20:22:16 Java开发

GDB 可以更改正在运行的程序的汇编代码吗?

我想为/bin/ls 添加一些额外的功能. 所以我在gdb上启动它,并在开头添加了一个断点. 现在的问题是:如何更改内存中正在运行的程序的代码?我可以看到汇编代码,但我无法修改.我该怎么做? 例如,在 Windows 上,我可以使用 oldbg 轻松做到这一点.在 Linux 上怎么样? (我知道这样做只会更改内存中进程的代码.所以我可以将内存转储到文件中,然后我会将更改保存在 ..
发布时间:2022-01-20 20:22:06 服务器开发

Linux C:简单&结构的“漂亮"转储/打印输出(例如在 gdb 中)-来自源代码?

我正在构建的内核模块中的一些结构有一点问题,所以我认为如果有一种简单的方法可以打印出结构及其值会很好 - 下面是一个小的用户态示例我的意思. 假设我们有如下简单的 C 示例(以 bash 命令的形式给出): FN=mtest猫>$FN.c age);免费(约翰多);}EOFgcc -g -O0 $FN.c -o $FN# 只是一个 gdb 的运行命令猫>./gdbcmds ..
发布时间:2022-01-20 20:21:49 服务器开发

显示在 gdb 中执行的每条汇编指令

我目前有一个棘手的错误发生在我无法访问源代码或符号的地方,即我可以看到发生崩溃的指令及其地址,但仅此而已.我想做的是让 gdb 在不需要交互的情况下运行并显示每条指令,但我还没有找到方法. 我希望实现的是这样的: (gdb)/* 一些命令 */0x2818a7c0:推送 %ebp0x2818a7c1: 移动 %esp,%ebp0x2818a7c3: 推送 %ebx0x2818a7c4: 低 ..
发布时间:2022-01-20 20:21:28 其他开发

找到变量 Buf 的确切地址

作为参考,我使用以下代码: #include #include int main (void) {字符缓冲区[100];//------>如何在 gdb 中找到地址?printf("缓冲区在内存位置:%08x\n", &buf);strcpy (buf, "一些随机文本");printf ("文本是 [%s]\n", buf);返回0;} 如何让 gdb ..
发布时间:2022-01-20 20:21:12 其他开发

如何更改 gdb 使用的 Python 解释器?

我使用的是 ubuntu 14.04,其中 python3 是默认系统包. 我想用gdb调试Python2.7程序,但是我好像遇到了这个问题: 当我在 gdb 中时,使用 py 命令会将我置于解释器中,因此我在解释器中运行了这些命令: 首先我检查解释器版本: (gdb) py>导入系统>打印(系统版本)>结束3.4.0(默认,2014 年 4 月 11 日,13:08:40)[ ..
发布时间:2022-01-20 20:20:54 Python

在 qemu 中使用 gdb 调试引导加载程序

Freedos 引导加载程序似乎存在问题.(在某些情况下,引导代码似乎找不到内核.) 所以我正在尝试使用 gdb 调试 qemu 中的引导加载程序.按照在几个 wiki 和免费在线课程资料上找到的说明,我像这样运行 qemu qemu-system-i386 -fda fdboot.img -boot a -s -S 然后像这样连接gdb $ gdb(gdb) 目标远程 localho ..
发布时间:2022-01-20 20:20:35 其他开发

在 GDB 中用一个命令打印多个变量

我想执行非常简单的命令 打印 var1, var2, var3, var4 在 gdb 中不时检查变量的值. 我不想使用显示,因为它会扰乱我的视野. 我该怎么做?现在我能做的就是: p var1p var2p var3p var4 解决方案 你可以这样做 打印{var1,var2,var3,var4} 这样就可以了. ..
发布时间:2022-01-20 20:20:28 其他开发

GDB 问题:Pretty-Printing a 2D Array?

我有一个二维数组矩阵[10][10],我想在调试时检查它. 我知道我可以在 GDB 中使用 p *matrix@10 但它在一行中输出,难以阅读. 有没有办法让这个输出以任何方式格式化,比如说矩阵? 解决方案 GDB 的一个重要特性是能够在被调试的代码中执行函数,所以你可以实现任何你喜欢的打印,例如: #include 整数矩阵[10][10];无效打印 ..
发布时间:2022-01-20 20:19:57 移动开发

使 GDB 在调用函数时打印控制流

如何在调用 gdb 时打印感兴趣的函数,并根据它们在堆栈中的深度进行缩进? 我希望能够说出类似(编造)的话: (gdb) trace Foo* Bar* printf 并让 gdb 打印所有以 Foo 或 Bar 开头的函数,因为它们被调用.有点像 gnu cflow,除了使用调试符号并且只打印实际调用的函数,而不是所有可能的调用流. 无法提供帮助的工具包括 cachegrind、 ..
发布时间:2022-01-20 20:19:50 其他开发

gdb 找不到运算符 []

双变量 var1, var2;std::vectorX;var1 = 1;var2 = 2;x.push_back(&var1);x.push_back(&var2); 当我在 gdb 中调试此代码并尝试 print x[0] 或 *x[0] 时,我得到: 找不到运算符[]. 现在,如果我在 push_back 之后包含这一行: x[0] = &var1; 我 ..
发布时间:2022-01-20 20:19:43 C/C++开发

C/C++ 需要一种聪明的方法来跟踪函数调用

我正在寻找一种聪明的方法来跟踪函数调用和返回.我知道我可以使用调试器,但我想要一种方法,让它在调用函数而不是单步执行代码时将某些内容打印到终端. 我在想我也许可以使用预处理器,但我不确定最好的方法是什么. 或者有没有办法使用 gdb 打印出有用的信息,而不必单步执行代码. 解决方案 大多数编译器允许您在函数调用之前和之后注入检测函数. 在 MSVC 中,它们是 _penter 和 ..
发布时间:2022-01-20 20:19:33 C/C++开发

如何编写 gdb 脚本(使用 python)?示例添加断点,运行,我们打的是什么断点?

我正在尝试使用 gdb 创建一个小单元测试,对于由 OpenOCD 控制的嵌入式 mcu(这使我可以通过 gdb 服务器控制我的目标). 所以我想用一些 gdb 脚本来自动化这个. 我想为 gdb 编写某种或多或少的脚本: 添加几个断点 启动程序 当我们停止时,它在哪里停止(获取帧信息) 退出. 有什么想法吗? 如何在 python gdb 脚本中执行此操作的示 ..
发布时间:2022-01-20 20:19:24 其他开发

为什么我会收到消息“单步直到退出...没有行号信息"在 GDB 中?

我已经使用 -g 标志使用 gcc 4.4.1 编译了我的 C 程序,但是当我尝试单步执行 中的一个函数时gdb 7.0 版,我收到消息: "单步执行直到退出函数_DictionaryTree_getNodeList,没有行号信息." 谁能告诉我为什么会这样? 解决方案 只是猜测,但是 _DictionaryTree_getNodeList 是在另一个不是用 -g 编译的文件中吗? ..
发布时间:2022-01-20 20:19:01 其他开发