gdb相关内容

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

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

以编程方式确定在另一个进程中加载​​了哪些模块?(OS X)

我想做的事情我觉得很简单,我只是不确定该怎么做. 具体来说,我只想获取在另一个进程中加载​​的模块(共享/动态库)列表.以及获取该模块在给定进程中的起始地址. 使用 GDB 获取这些信息非常简单.您只需连接到该进程,然后键入“信息共享".这正是我想获得的信息类型.如: Num Basename 类型地址原因 ||来源|| |||||| 1 亚丁 - 0x1000 执行 Y ..
发布时间:2022-01-20 20:42:00 移动开发

如何在 main 之前调试崩溃?

我的程序静态链接到许多库并在进入 gdb 中的 main 之前崩溃.如何诊断问题所在? 解决方案 开始一个一个地取出库,直到它停止崩溃.然后检查罪魁祸首. ..
发布时间:2022-01-20 20:41:50 其他开发

GDB 打印 char 数组中的所有值

我将各种文件名存储在我的数组中,这些文件名由空字节分区.调试时,我只能看到第一个文件名.因此,例如,如果我的数组是这样的:hello.txt00000hello2.txt,我只能看到 hello.txt.如何打印整个数组?我在其他地方找不到这样的命令. 解决方案 您可以使用 x/999bc,其中 999 是数组的大小,例如: paul@thoth:~/src/sandbox$ gdb . ..
发布时间:2022-01-20 20:41:32 其他开发

将 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++开发

Xcode LLDB 观察点

有没有办法使用 LLDB 在 Xcode 中观察变量?还是只有 GDB 才有可能?我正在尝试使用命令 watchpoint set variable 但我收到消息: 无效的命令“观察点设置" 解决方案 从 Xcode 4.5 开始,iOS 和 Mac OS X 调试支持观察点.要在名为 foo 的变量上设置断点,请执行 (lldb) 观察点设置变量 foo 您始终可以在 lldb ..
发布时间:2022-01-20 20:41:17 其他开发

SIGTRAP 尽管没有设置断点;隐藏硬件断点?

我正在为 STM32 嵌入式系统调试这个软件.在其中一个函数中,我的程序不断遇到某种断点: SIGTRAP,跟踪/断点陷阱 但是,在 GDB 中,当我执行 info breakpoints 时,我会得到 No breakpoints or watchpoints.断点实际上对应于我很久以前在另一个版本的可执行文件中设置的断点.当我设置断点时,GDB 告诉我在只读内存上自动使用硬件断点( ..
发布时间:2022-01-20 20:41:08 其他开发

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

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

Linux 堆结构和 malloc() 和 free() 的行为

我有一个带有 Linux 2.6 内核的 D​​ebian,我尝试了解堆如何使用 malloc() 和 free() 工作/表现.我试图搜索 malloc() 和 free() 算法和堆结构,但找不到任何有用的东西.不幸的是,我对 Linux 和内存如何工作的了解太少,无法理解 free() 和 malloc() 的源代码. 这是一个示例代码: int main(int argc, cha ..
发布时间:2022-01-20 20:40:46 服务器开发

gdb 显示的地址与代码中的地址不同

我正在尝试实施缓冲区溢出攻击,我需要知道我试图溢出的缓冲区的地址. 使用 GDB 显示的地址与我刚刚在代码中显示的地址不同: 具体代码: #includeint main() {字符缓冲区[20];printf("%p\n", 缓冲区);//0xbffff320返回0;} 但是,如果我这样做,在 gdb 中: p &buffer 我得到:0xbffff330 ..
发布时间:2022-01-20 20:40:29 其他开发

有没有办法定位进程的哪一部分使用了最多的内存,只查看生成的核心文件?

我有一个进程(每次都由看门狗启动,但由于某种原因停止了),通常使用大约 200MB 内存.一旦我看到它正在消耗内存 - 内存使用量约为 1.5-2GB,这绝对意味着某处的“内存泄漏"(引号中的“内存泄漏",因为这不是真正的内存泄漏 - 就像分配的内存,从未释放 且无法访问 - 请注意,只使用智能指针.所以,我想到了一些巨大的容器(我没有找到)或类似的东西) 后来,由于内存使用率高,进程崩溃了 ..
发布时间:2022-01-20 20:40:04 服务器开发

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

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

gdb 附加到进程而不停止

每次我使用 gdb 附加到一个进程时,它都会停止目标程序,我需要输入 'cont' 让它离开.有没有办法在不停止进程的情况下附加到进程?如果进程停止一段时间后行为会有所不同,这会使事情变得更容易. 解决方案 你不能让它不停.但是,您可以立即继续...创建一个简单的批处理脚本,该脚本将附加到特定进程并在附加后立即继续执行: gdb attach $1 -x ./附加PID ..
发布时间:2022-01-20 20:39:20 其他开发

自动化 gdb:在每次调用函数 puts 时显示回溯

我想调试一些程序.我需要对某个函数的所有调用的回溯,例如放. 现在我用这样的gdb script: 设置宽度 0设置高度 0设置详细突破看跌命令 1回溯继续结尾 但是以 开头 gdb --batch --command=script --args ./some_program 参数 给出错误: 函数“puts"未定义.在未来的共享库加载时使断点挂起?(y or [n]) [回答 ..
发布时间:2022-01-20 20:38:58 其他开发

如何在 MacOS 10.13.3 (High Sierra) 上安装 GDB

有很多帖子和博客讨论这个话题,但似乎没有任何效果...... 在整个互联网上,这里是关于安装和运行 gdb 所需过程的共识. 安装gdb brew install gdb Homebrew “成功"安装 gdb v8.1 代码设计gdb Codesign gdb 按照 代码设计过程 (详见单独的 SO 帖子). 更新~/.gdbinit echo "set st ..
发布时间:2022-01-20 20:38:28 其他开发

pthread_create 上的 gdb 断点

我正在尝试在 gdb 中的 linux 中为创建线程的程序设置断点.我想在线程创建时设置一个断点,但不幸的是 pthread_create 是一个版本化符号,我无法得到它的全名. 如果我输入: catch thread_start 我明白了 尚未实现 thread_start 的捕获 在这种情况下,在 gdb 中捕获线程创建的最佳方法是什么? 解决方案 试试这个: (gdb ..
发布时间:2022-01-20 20:38:14 其他开发

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

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

pthread_t 到 gdb 线程 id

有谁知道从 pthread_t 到 GDB 显示的信息线程的方法吗? 所以我有: (gdb) 信息线程37 线程 22887 0xb7704422 在 __kernel_vsyscall()36 线程 22926 0xb7704422 在 __kernel_vsyscall()35 线程 22925 0xb7704422 在 __kernel_vsyscall()34 线程 22924 0 ..
发布时间:2022-01-20 20:37:59 其他开发