gdb 相关问题

将此标记用于与GDB相关的问题,GDB是GNU软件系统的标准调试器。

如何检查核心中对象函数的返回值?

示例代码: 结构消息{ 虚拟 int id() const { 返回 0; } }; 结构 Ping : 公共消息 { 虚拟 int id() const { 返回 1; } }; 假设您在 gdb 中加载了一个核心文件。 这里...

回答 1 投票 0

在 gdb 脚本中使用 while 循环

我正在编写一个脚本来检查核心转储。目标是使用 while 循环执行 gdb 命令进行分析。 #!/usr/local/bin/bash # # 提取核心文件信息的脚本 # #二进制...

回答 1 投票 0

GDB 脚本太慢,需要帮助/建议

我正在编写一个gdb脚本来分析核心文件。其目的如下: 1]我正在寻找分散在64Mb空间中的数据包。该数据包的幻数为 4 字节。母鸡...

回答 2 投票 0

ESP 在 /proc/pid/maps 和二进制中不同

我正在调试崩溃,我看到以下行为 - 当我将 GDb 附加到进程并执行信息寄存器时,我看到 esp 的以下值 - ESP 0xfd2475d0 0xfd2475d0 d...

回答 1 投票 0

用gdb查找memcpy错误

下面代码的错误是memcpy(t[j], m[j], sizeof(int) * DIM * DIM);应该是 memcpy(t[j], m[j], sizeof(int) * DIM);: // 无标题7.c #包括 #包括 以下代码中的错误是memcpy(t[j], m[j], sizeof(int) * DIM * DIM);应该是memcpy(t[j], m[j], sizeof(int) * DIM);: // Untitled7.c #include <stdio.h> #include <string.h> #define DIM 1000 int main(void) { int m[DIM][DIM], t[DIM][DIM]; unsigned j, k; for(j = 0; j < DIM; j++) for(k = 0; k < DIM; k++) m[j][k] = j * DIM + k; for(j = 0; j < DIM; j++) memcpy(t[j] ,m[j], sizeof(int) * DIM * DIM); // only one DIM for(j = 0; j < DIM; j++) for(k = 0; k < DIM; k++) m[j][k] = t[DIM-k-1][j]; return 0; } 使用 gdb 如何找到该错误?我了解了如何创建核心文件(使用ulimit -c unlimited),然后我使用了$ gdb Untitled7 core,它给出了: ... Reading symbols from Untitled7...done. [New LWP 10610] Core was generated by ` ? @ A'. // and symbols of binary files Program terminated with signal SIGSEGV, Segmentation fault. #0 __memcpy_ssse3 () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S:2590 2590 ../sysdeps/i386/i686/multiarch/memcpy-ssse3.S: File o directory non esistente. // File or directory not existent. 之后我该怎么办? 您不能总通过这种方式找到真正的错误,但您可以找到发生分段违规的位置。 您需要使用调试信息编译程序,最好不进行优化,即使用 -ggdb -O0 编译标志。如果违规发生在库函数内部(如您的示例所示),请使用 gdb 命令 up 向上移动调用堆栈,直到到达代码。然后您应该会看到程序的有问题的行。 确保gdb可以找到您的来源。通常当你的当前目录是你的构建目录时,gdb可以找到它们。如果没有,请使用 directory 的 gdb 命令。

回答 1 投票 0

如何检查程序在valgrind下运行时生成的core文件

我有一个程序 myprog,我一直在 valgrind 下运行: /usr/bin/valgrind --tool=massif --tool=memcheck --leak-check=yes --track-origins=yes --log-file=/tmp/valgrind%p /opt/bin/myprog 我...

回答 1 投票 0

为什么gdb找不到符号表?

大家。 我正在尝试使用其核心文件和 gdb 修复 ceph 中的问题。 根据以下输出,gdb 应该已成功从 ceph-debuginfo 加载调试符号: 读取符号...

回答 1 投票 0

从gdb核心,找到最大的可用内存块

我有一个系统进程核心,如果它分配的内存超过配置的限制,它就会杀死进程。 看来进程崩溃是因为内存碎片。 为了确认我想知道...

回答 1 投票 0

永久禁用gdb启动文本

用gdb(gdb main)调试程序时,会显示很多积分和链接。我知道我们可以使用安静参数来禁用此文本,但我想永久禁用它。 gdb 有

回答 3 投票 0

C 程序模仿 gdb 调用函数在核心上执行

在我的程序中,IP 前缀存储为 Trie。我想从程序生成的 linux coredump 中转储 trie。我已经有一个 C 函数,可以遍历树并打印...

回答 1 投票 0

如何使用gdb确定核心文件中pthread_raise(sig=6)的原因

我的应用程序有时会崩溃,但我找不到原因。我的应用程序是多线程(QThread)并使用多个QUdpSockets。我认为这是由于同时访问套接字而发生的,但我不知道什么时候......

回答 1 投票 0

如何在使用 GDB 生成进程核心文件之前预测其大小?

如何根据 /proc/pid/maps、/proc/pid/coredump_filter、top 显示的值(如 VIRT RES 等)预测核心文件的大小? 一般来说,尺寸是多少...

回答 1 投票 0

卡在设置 libc6:i386

我目前正在设置一个调试器,但无论我尝试如何尝试,它总是卡在设置 lib6:i386 上。 正在阅读包裹清单...完成 构建依赖树...完成 阅读状态

回答 1 投票 0

GDB 在事后分析中显示错误的线程

我遇到了 GDB 的奇怪行为。当对从 C++ 中的多线程应用程序转储的核心进行事后分析时,调试器命令 BT 在哪里 线程信息 从来没有...

回答 1 投票 0

调试核心文件

我想写一个可以在Linux中读取核心文件的程序。但是我找不到任何可以在这方面指导我的文档。有人可以指导我在哪里可以找到一些资源吗...

回答 3 投票 0

如何从HPUX中的核心文件中获取可执行文件名?

我还没有从 stackoverflow.com 找到这个问题的任何答案。 % uname -a HP-UX rx3600 B.11.31 U ia64 2782985371 在Linux中,我可以从核心转储文件中获取文件名,如下所示。 “g服务器”...

回答 1 投票 0

linux:有没有办法找出哪个进程生成了核心文件?

我的系统中生成了一些核心转储文件,但这些核心文件的后缀只有时间戳,没有进程ID信息。 所以核心内有任何进程 ID 相关信息

回答 2 投票 0

GDB 和 corefiles 导致“无法从内存读取有效的对象文件图像。”

在一个相当旧的Linux系统上,我无法获得gdb随后可以读取的核心转储。内核版本是3.8.13,libc版本是2.3.4。 ulimit -c 设置为无限制且 /proc/sys/...

回答 1 投票 0

GDB 反汇编无法识别 ASM 标签,例如:_start

我有一个用以下命令组装和链接的汇编文件: $ nasm -f elf -F 矮人 -g -o 文件名.o 文件名.asm $ ld -o 文件名 文件名.o 正如你所看到的,我添加了 -g 所以 nasm 基因......

回答 1 投票 0

在 Linux 上以编程方式为 gdb 在 C 或 C++ 代码中设置断点

如何以编程方式在 C 或 C++ 代码中设置适用于 Linux 上的 gdb 的断点? IE。: int main(int argc, char** argv) { /* 在这里设置断点! */ 整数a = 3; 一个++; /* 在...

回答 7 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.