gdb相关内容

使用 GDB 检查映射地址

我正在使用我在 Linux 中的直接内存访问 上发布的驱动程序将一些物理内存映射到用户空间地址.但是,我不能使用 GDB 查看任何地址;即 x 0x12345678(其中 0x12345678 是 mmap 的返回值)失败并出现错误“无法访问地址 0x12345678 的内存". 有没有办法告诉GDB这块内存可以查看?或者,我可以在 mmap 中做些什么不同的事情(调用或 foo_mmap ..
发布时间:2022-01-20 20:18:52 其他开发

如何在运行时查看我的 C 程序的内存布局?

我想在 C 中查看我的程序的内存布局,以便我可以在运行时了解内存的所有不同部分,例如 BSS 或堆中的变化? 解决方案 在Linux中,对于进程PID,查看/proc/PID/maps和/proc/PID/smaps 伪文件.(进程本身可以使用/proc/self/maps和/proc/self/smaps.) 它们的内容记录在 man 5 proc 中. 这是一个示例,说明如 ..
发布时间:2022-01-20 20:18:45 服务器开发

如何在本地范围的变量上设置持久和条件观察点?

如果我为当前作用域的局部变量设置了观察点,它会在超出作用域时被自动删除.有什么方法可以设置一次并在进入相同范围时使其自动保持活动状态? 是否可以设置条件观察点,例如 watch var1 if var1==0?在我的情况下,条件不起作用.每当 var1 的值更改时,gdb 就会停止,而不是直到 var1 == 0 为真.我的 gdb 是 GNU gdb 6.8-debian. 解决方案 ..
发布时间:2022-01-20 20:18:36 其他开发

如果满足一定条件,如何监控 GDB 中的变量并记录?

我想知道是否有任何方法可以监视变量的值,直到例如计数器达到一个值,然后在每个计数器值期间记录变量值的输出? 解决方案 在计数器上设置观察点: (gdb) 观察变量 并使该观察点有条件: (gdb) cond var>=值 如果要登录到文件: (gdb) 设置日志文件(gdb) 设置登录 默认情况下 gdb 记录到 gdb.txt ..
发布时间:2022-01-20 20:18:26 其他开发

使用 Xcode 调试器查看动态分配的数组?

假设我有一个 C++ 数组: double* velocity = new double[100]; 使用 GDB 命令行,我可以通过以下命令查看这个数组: >打印*速度@ 100 它会打印出数组中所有双精度值的格式正确的列表. 但是,当使用 Xcode 调试器时,它最多会将其视为指向单个双精度值的指针,并在变量列表中显示 velocity[0]. 这使它成为调试包含大型动态分 ..
发布时间:2022-01-20 20:17:59 C/C++开发

设置 gdb 退出断点不起作用?

我在 exit 和 _exit 上设置了断点,我的程序(在 linux 2.6.16.46-0.12 sles10 上运行的多线程应用程序)不知何故仍在以我无法定位的方式退出 (gdb) c...[新线程 47513671297344 (LWP 15279)][新线程 47513667103040 (LWP 15280)][新线程 47513662908736 (LWP 15281)]程序以代码 ..
发布时间:2022-01-20 20:17:35 服务器开发

调试:使用 gdb 单步执行 Python 脚本?

假设我们有以下超级简单的 Python 脚本: 打印“初始化"....a=10print "变量值为 %d" % (a)打印“全部完成!" ...然后说,我想通过在 a=10 行放置一个断点来调试此脚本,然后单步执行该脚本. 现在,我想为此使用 gdb,因为我想调试可能作为共享对象(.so) 库 - 因此,理想情况下,我会在 Python 代码行上放置一个断点,然后“进入"共享对象的 C ..
发布时间:2022-01-20 20:17:13 Python

如何解释 GDB “信息框架"输出?

请帮助我理解这一点:- (gdb) 信息框堆栈级别 0,帧在 0xb75f7390:eip = 0x804877f in base::func() (testing.cpp:16);保存eip 0x804869a在 0xb75f73b0 处按帧调用源语言c++.参数列表在 0xb75f7388,参数:this=0x00xb75f7388 处的局部变量,前一帧的 sp 为 0xb75f7390保存 ..
发布时间:2022-01-20 20:16:39 其他开发

您使用什么工具在 Linux 上开发 C++ 应用程序?

我在 Linux 环境中开发 C++ 应用程序.我每天使用的工具包括带有 CDT 插件的 Eclipse、gdb 和 valgrind. 其他人使用什么工具?Linux 上是否有任何东西可以与 Microsoft Visual Studio 的流畅性相媲美? 解决方案 我用了一堆终端窗口.我在有趣的源文件上运行 vim,在另一个文件上运行 make 和 g++ 以用于编译器错误或用于运行 ..
发布时间:2022-01-20 20:16:12 Java开发

gdb tui, dl-debug.c:74 没有这样的文件或目录

如果我用 -g 标志编译文件启动 gdb -tui 或 gdbtui,然后设置 b main 然后按 r 我得到提示 dl-debug.c:74 no such file or directory 并且单步执行源窗口时的输出将被写入源窗口在底部,这也弄乱了这个窗口,所以它不是真的可读.我已经看过 askubuntu.com 和 Sourceware Bugzilla – Bug 列表 并在此站点上 ..
发布时间:2022-01-20 20:15:59 其他开发

`gdb` 无法展开堆栈

考虑以下(损坏的)代码: #include #include 使用命名空间标准;类测试{上市:unique_ptr小号;测试():s(NULL){}无效更新(字符串& st){s = unique_ptr(&(st));}};无效更新(测试& t){字符串 s("你好");t.update(s);}int main() {测试 t;更新(t);cout 这里我们在 ..
发布时间:2022-01-20 20:15:49 其他开发

GDB - 断点地址

我编写了一个简单的汇编代码,现在我正在尝试使用 gdb 对其进行调试. 在 gdb 中我输入了: (gdb) break _start0x4000b0 处的断点 1 断点地址(0x4000b0)是否相对于代码行的硬盘内存位置?还是仅与节目长度有关?(我认为此时程序还没有加载到 RAM 中) 解决方案 它是RAM中的一个虚拟地址.你有一个位置相关可执行文件,所以它将加载到的绝对地址 ..
发布时间:2022-01-20 20:15:30 其他开发

使用“rbreak filename.c:"在文件中放置断点.不工作

我想在文件的所有函数上放置断点.我遇到了这个链接:http://sourceware.org/gdb/download/onlinedocs/gdb/Set-Breaks.html#Set-Breaks 建议为此使用 rbreak 命令.当我使用“rbreak"时.,它可以按预期正常工作,并在 prog 的所有功能中放置断点.但是什么时候使用 rbreak 文件名.c:. 这根本 ..
发布时间:2022-01-20 20:15:21 其他开发