草庐IT

linux - 如何在 Eclipse 中使用 GDB 进行 C/C++ 调试?

我是VisualStudio用户,习惯于使用断点进行调试。我现在在linux环境中工作,并使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但并不像拥有UI那样容易。如何在eclipse中使用gdb? 最佳答案 以下说明适用于Eclipse3.5(Galileo)。对于3.6(Helios),除了步骤2中的链接外,它们是相似的。转到“帮助”>“安装新软件”。添加CDT存储库http://download.eclipse.org/tools/cdt

linux - 如何在 Eclipse 中使用 GDB 进行 C/C++ 调试?

我是VisualStudio用户,习惯于使用断点进行调试。我现在在linux环境中工作,并使用Eclipse作为IDE。我是linux和eclipse的新手。我不知道如何在Eclipse中使用gdb。我尝试在命令行中使用gdb,但并不像拥有UI那样容易。如何在eclipse中使用gdb? 最佳答案 以下说明适用于Eclipse3.5(Galileo)。对于3.6(Helios),除了步骤2中的链接外,它们是相似的。转到“帮助”>“安装新软件”。添加CDT存储库http://download.eclipse.org/tools/cdt

linux - 在 64 位 Linux 和 64 位处理器上运行 32 位汇编代码 : Explain the anomaly

我遇到了一个有趣的问题。我忘记了我正在使用64位机器和操作系统并编写了32位汇编代码。我不知道如何编写64位代码。这是Linux上Gnu汇编程序(AT&T语法)的x8632位汇编代码。//hello.S#include#include#defineSTDOUT1.datahellostr:.ascii"hellowolrd\n";helloend:.text.globl_start_start:movl$(SYS_write),%eax//ssize_twrite(intfd,constvoid*buf,size_tcount);movl$(STDOUT),%ebxmovl$hello

linux - 在 64 位 Linux 和 64 位处理器上运行 32 位汇编代码 : Explain the anomaly

我遇到了一个有趣的问题。我忘记了我正在使用64位机器和操作系统并编写了32位汇编代码。我不知道如何编写64位代码。这是Linux上Gnu汇编程序(AT&T语法)的x8632位汇编代码。//hello.S#include#include#defineSTDOUT1.datahellostr:.ascii"hellowolrd\n";helloend:.text.globl_start_start:movl$(SYS_write),%eax//ssize_twrite(intfd,constvoid*buf,size_tcount);movl$(STDOUT),%ebxmovl$hello

linux - 如何访问 .gdbinit 内部和 gdb 内部的环境变量?

我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”

linux - 如何访问 .gdbinit 内部和 gdb 内部的环境变量?

我希望在使用gdb调试时设置源代码的路径。我选择使用.gdbinit文件来执行此操作。基本上,它包含一个命令:directory="/path/to/src".但是,我希望能够将该命令指定为:directory="$SOURCESROOT/src"其中SOURCESROOT是一个环境变量。并且,如果可能的话,也可以通过输入directory=$SOURCESROOT/folder在gdb调试session中执行此操作。基本上,我希望在gdb内部(或.gdbinit内部)访问环境变量。但不是被调试者的环境(设置env等),而是gdb本身的环境(即我首先在bash提示符下键入“gdb程序”

c - 如何在GDB中调试fork-exec进程的入口点?

我有一个Clinux应用程序(A),它在启动时生成另一个进程(P)。当我想调试P时,我像往常一样启动A,然后使用ddd/gdb连接到P。当我想调试P的入口点(main的开始)时出现问题。如果我在将调试器连接到P时遵循通常的方法,已经太晚了。我找到的解决方案是在P的主体开始时插休眠眠,这样我就有时间连接gdb,但这不是一个非常优雅的解决方案。我也尝试过使用asm("int$3")但它似乎不起作用。你知道我该如何解决这个问题吗?(最好不改变A或P的代码) 最佳答案 你应该使用这个选项:setfollow-fork-modemodeWhe

c - 如何在GDB中调试fork-exec进程的入口点?

我有一个Clinux应用程序(A),它在启动时生成另一个进程(P)。当我想调试P时,我像往常一样启动A,然后使用ddd/gdb连接到P。当我想调试P的入口点(main的开始)时出现问题。如果我在将调试器连接到P时遵循通常的方法,已经太晚了。我找到的解决方案是在P的主体开始时插休眠眠,这样我就有时间连接gdb,但这不是一个非常优雅的解决方案。我也尝试过使用asm("int$3")但它似乎不起作用。你知道我该如何解决这个问题吗?(最好不改变A或P的代码) 最佳答案 你应该使用这个选项:setfollow-fork-modemodeWhe

c - 使用-fPIC编译的程序在GDB中跳过线程局部变量时崩溃

这是一个非常奇怪的问题,仅当使用-fPIC选项编译程序时才会发生。使用gdb我可以打印线程局部变量,但是单步执行它们会导致崩溃。thread.c#include#include#include#defineMAX_NUMBER_OF_THREADS2structmystruct{intx;inty;};__threadstructmystructobj;void*threadMain(void*args){obj.x=1;obj.y=2;printf("obj.x=%d\n",obj.x);printf("obj.y=%d\n",obj.y);returnNULL;}intmain(i

c - 使用-fPIC编译的程序在GDB中跳过线程局部变量时崩溃

这是一个非常奇怪的问题,仅当使用-fPIC选项编译程序时才会发生。使用gdb我可以打印线程局部变量,但是单步执行它们会导致崩溃。thread.c#include#include#include#defineMAX_NUMBER_OF_THREADS2structmystruct{intx;inty;};__threadstructmystructobj;void*threadMain(void*args){obj.x=1;obj.y=2;printf("obj.x=%d\n",obj.x);printf("obj.y=%d\n",obj.y);returnNULL;}intmain(i