gdb相关内容

我可以使用GDB来调试正在运行的进程吗?

在linux下,我可以使用GDB调试当前运行的进程吗? 解决方案 是的。使用 attach 命令。有关详细信息,请查看此链接。在GDB控制台上输入 help附加可以得到以下内容: code>(gdb)帮助附加 附加到GDB之外的进程或文件。 此命令附加到另一个目标,与最后一个 “目标”命令(“信息文件“将显示您的目标堆栈)。 该命令可以将进程ID,进程名 (可选的 ..
发布时间:2017-04-17 19:15:14 服务器开发

在GDB中运行应用程序,直到发生异常

我正在使用多线程应用程序,我想使用GDB进行调试。 问题是,我的一个线程不断地消息: / p> 纯虚拟方法称为 终止调用而没有活动异常 中止 我知道该消息的原因,但我不知道我的线程发生在哪里。回溯真的很有帮助。 当我在GDB中运行我的应用程序时,每次线程被暂停或恢复时,它都会暂停。我希望我的应用程序继续正常运行,直到其中一个线程死于该异常,在这一点上,一切都应 ..
发布时间:2017-04-17 19:13:44 C/C++开发

如何使gdb保存命令历史?

如何设置 gdb ,以便保存命令历史记录?当启动新的 gdb 会话时,我想使用向上箭头键访问上一个会话的命令。 解决方案 命令历史涵盖在 GDB手册,22.3命令历史记录。创建一个文件 $ HOME / .gdbinit ,将其权限更改为 0600 ,并添加以下内容: 设置历史记录保存 您可以设置以下命令保存的过去命令数。该命令被描述为“设置gdb在其历史列表中保留的 ..
发布时间:2017-04-17 19:13:19 开发方法

检查gdb中函数的返回值

是否可以在gdb中检查函数的返回值,假设返回值不是分配给变量? 解决方案 我想有更好的方法来做,但是完成命令执行,直到当前堆栈框架弹出并打印返回值 - 给定程序 int fun(){ return 42; } int main(int argc,char * v []){ fun(); return 0; } 您可以调试它 - (g ..
发布时间:2017-04-17 19:01:57 开发方法

如何在gdb中打印长字符串的全部值?

我想在GDB中打印一个C字符串的全长。默认情况下是缩写,如何强制GDB打印整个字符串? 解决方案 设置打印元素0 从GDB手册: code>设置打印元素 元素数量 设置数组GDB打印的元素数量的限制。如果GDB正在打印一个大阵列,则在打印由 set print elements 命令设置的元素数之后,它将停止打印。此限制也适用于字符串的显 ..
发布时间:2017-04-17 18:44:13 C/C++开发

调试选项-g如何更改二进制可执行文件?

在编写C / C ++代码时,为了调试二进制可执行文件,必须在编译器/链接器上启用调试选项。在GCC的情况下,选项为-g。当启用调试选项时,如何影响二进制可执行文件?文件中存储什么额外的数据,允许调试器的功能呢? 解决方案 -g告诉编译器存储符号表信息在可执行文件中。其中包括: 符号名称 键入符号信息 符号来自的文件和行号 调试器使用此信息输出符号的有意义的名称,将指令与源 ..
发布时间:2017-04-17 18:33:57 开发方法

如何在GDB中打印C ++矢量的元素?

我想检查GDB中 std :: vector 的内容,该怎么做?假设为了简单起见,这是一个 std :: vector 。 解决方案 要查看向量std :: vector myVector内容,只需键入GDB: (gdb)打印myVector 这将产生类似于 $ 1 = std :: vector of length 3,capacity ..
发布时间:2017-04-17 18:31:59 C/C++开发

调试在客户机箱上生成的核心文件

我们从客户的盒子中获取运行我们的软件的核心文件。不幸的是,因为我们一直使用-O2 编译没有调试符号,这导致了我们无法弄清楚为什么崩溃的情况,我们已经修改了构建,现在他们生成-g和 - O2在一起然后我们建议客户运行一个-g二进制文件,以便调试变得更容易。 我有几个问题: 当从Linux发行版生成核心文件,而不是我们在Dev中运行的文件时,会发生什么?堆栈跟踪是否也有意义? 在Linu ..
发布时间:2017-04-17 18:27:54 服务器开发

可以在GDB的“内存访问”中设置断点吗?

我正在通过gdb运行应用程序,并且我想要随时访问/更改特定变量,设置一个断点。有没有一个很好的方法来做到这一点?我也有兴趣在其他方式监视C / C ++中的一个变量来查看是否/何时改变。 解决方案 em> watch 只能在写入中断, rwatch 允许您打破读取,并且 awatch 允许您打破读/写。 您可以在内存位置设置读取观察点: gdb $ rwatch * 0xfe ..
发布时间:2017-04-17 18:05:30 开发方法

Debian / Ubuntu的Debug信息文件约定?

根据洛杉矶的如何在构建目标之外生成gcc调试符号的答案,我可以创建一个两部分的可执行文件 - 剥离的可执行文件和调试信息文件。 创建剥离的可执行文件和调试信息文件后,我正常安装可执行文件(使用 make install )。但是我不知道Debian / Ubuntu的调试信息文件如何处理。 我有两个与GDB或LLDB调试可执行文件相关的问题(如果调试需要): Debian / U ..
发布时间:2017-04-16 21:53:05 服务器开发

Eclipse CDT调试(外部过程)并查找其源代码

当我尝试使用Eclipse CDT调试外部进程时,我可以附加到它,但是我无法获得调试配置来找到原始的C源。当我使用Eclipse中运行的进程启动调试器时,我可以让调试器找到源代码。 只有当连接到外部进程时,CDT找不到。它只是显示拆卸的代码的内容。问题是,进程处理来自命令行的输入,我似乎没有找到一种方法在Eclipse CDT中启动调试器,并允许我输入输入。 我正在使用Eclipse ..
发布时间:2017-03-09 21:38:20 Java开发

gdb在emacs在Windows上

我在Windows中运行Emacs 22.3。今天早些时候我有gdb在Emacs工作正常。我正在安装QT4,在安装过程中,它要求我卸载MSYS,我迅速点击通过不考虑事情。我想我有gdb安装了MSYS包和Emacs使用,但我不完全确定。现在当我运行下面的时候,我在迷你缓冲区中得到一个错误。 Mx gdb “搜索程序:没有这样的文件或目录,gdb“ 我试图添加路径” C:\c ..
发布时间:2017-03-09 21:36:10 Linux/Unix

什么是最小的Cygwin安装以使DDD在XP上正常运行?

我在Windows XP中使用草莓Perl附带的MinGW中的gcc。我想要 ddd (数据显示调试器),但显然在Windows上获取ddd最简单的方法是运行Cygwin。那么Cygwin的最低限度是什么,我可以安装以获得ddd运行?我喜欢如果我可以在Win32本机运行ddd,但这似乎不是一个选项。 解决方案 据我所知,只有以下(使用Cygwin DLL release版本1.5.25-1 ..
发布时间:2017-03-09 21:13:27 Linux/Unix

如何添加gdb到cygwin

如何添加gdb到cygwin.I havw下载gdb tar包cygwin从sourceforge.On提取iot有很多文件,我粘贴的gdb.exe文件从cygwin的bin文件夹中的包,但它不工作 解决方案 当你第一次安装Cygwin时,应该已经得到一个安装程序。如果您丢失了,可以从Cygwin网站获取。再次运行并选择gdb进行安装。 ..
发布时间:2017-03-09 21:08:45 Linux/Unix

使用gdb的核心转储分析

我有几个关于核心转储的问题。我在Windows上有gdb,使用Cygwin。 核心转储文件的位置是什么?它是a.exe.stackdump文件吗? (这是唯一的文件生成后崩溃)我读在其他论坛,核心转储文件命名为“核心”。但是我没有看到任何名为“core”的文件。 打开和理解核心转储文件的命令是什么? li> 解决方案 您需要配置Cygwin以生成核心转储包含 erro ..
发布时间:2017-03-09 20:25:28 C/C++开发

使用一个来自Cygwin的stackdump可执行文件

使用addr2line我可以知道程序是如何到达崩溃点的解码地址一个。有没有替代工具,可以缓解使用堆栈转储调试? 是否有办法在Insight / Gdb中加载此信息? 解决方案 您可以指示Cygwin启动gdb调试器只是在发生故障的时候。 为此,请将 error_start = action 添加到Cygwin环境变量: export CYGWIN =“$ CYGWIN error ..
发布时间:2017-03-09 19:59:03 Linux/Unix

如何调试只有一个运行X11的显卡的CUDA库

我正在运行一个CUDA库,我需要调试内存问题和其他问题。但是当我将cuda-gdb附加到进程时,会出现错误 错误:所有CUDA设备都用于X11,调试。 我理解错误,但有一种方法,我可以调试的问题。因为我只有1个GPU,关闭X11真的不切实际。 在非Nvidia硬件上,我认为有一种方法来模拟cuda gpu。 解决方案 首先,因为你使用的是Linux,重新在幸运的位置,你可 ..
发布时间:2017-03-04 15:39:00 其它硬件开发

c ++ pthreads - 尝试锁定互斥读取时崩溃

LocalT 有实现 read-write-mutex 的其他类的成员。在构造函数中初始化Mutex,并使用 pthread_rwlock_rdlock(& aMutex); 读取锁。所以,似乎,它的所有确定与互斥类。但是当某些 LocalT 对象锁定其互斥锁成员进行读取时,程序崩溃。 CSerialize。 cpp:2054 行 MUTEX.lock_reading(); code> ..
发布时间:2017-01-13 12:56:47 C/C++开发