草庐IT

c++ - 用于 Mac 的 Eclipse C++ GDB 调试器

我一整天都在尝试使用Eclipse,但每次都失败了。我知道我可能是错的,我知道有很多人正在为开源项目努力工作,但如果我不能使用某个程序,请运行并调试“Helloworld”文件,一定有问题。我使用的是OSX10.9.5(是的,也许使用mac是我的第一个错误,对吧?)。每次我尝试调试“HelloWorld.cpp”程序时,我都会收到以下错误。http://imgur.com/RgXCSyW是的,我在谷歌上到处搜索。是的,我已经看过其他关于类似主题的回复,并且我已经尝试过他们提供的解决方案。遗憾的是,它没有用。感谢你们的耐心等待,我希望学习如何编码,并可能有一天对其他人有所帮助。卢卡附注写

c++ - 有没有办法在 gdb 中打印 Armadillo 矩阵?

我正在使用gdb调试我的C++程序。我正在使用Armadillo数值库来定义我的矩阵。我有一个像这样定义的Armadillo矩阵:matA=randu(5,5);是否可以在使用gdb调试器时打印整个矩阵? 最佳答案 这个问题可能很老,但绊倒它让我找到了适合我自己工作的解决方案。由于Armadillo库基于模板的特性,您需要提供一些您自己的助手:#include#includetemplatevoidprint_matrix(Matrixmatrix){matrix.print(std::cout);}//provideexplici

c++ - 在 C++ 中继续迭代,直到 gdb 中的特定迭代次数

我正在使用gdb-7.0.1,我想我在我的代码的某个部分检测到一个错误,它有一个for循环。for循环看起来像for(inti=0;i这里的end是一个非常大的整数。代码在第一次迭代时没有崩溃,似乎在迭代号end/2的某处崩溃。因为我想了解代码在迭代次数end/2时的行为,只需stepping和nexting来自i=0直到我到达这个迭代点,是不可行的。有没有办法告诉gdb继续执行for循环直到i得到值end/2然后等待用户手动单步执行迭代次数end/2?我在UbuntuLinux上使用gcc-4.5.2 最佳答案 这是关于condi

c++ - gdb 找不到由 clang++ 编译的源文件

当使用clang++编译我的项目时,目标代码中显然没有包含源文件的路径。这意味着gdb无法找到用于显示代码的源文件。对于特定实例,我可以使用gdb的directory命令添加一个目录,但我的项目有很多源目录,这很快就会变得烦人。当我将我的配置切换为使用g++时,gdb会简单地找到我所有的源文件。此功能适用于SnowLeopard上的clang++2.9,但不适用于Lion上的clang++3.1。我有XCode4.3.2。是否有clang选项强制在目标文件中使用完整路径?我的配置可能还有其他问题吗? 最佳答案 我发现了这一点:问题发

c++ - gdb 错误不是可执行格式 : File format not recognized

我正在尝试在Ubuntu16.04上调试一个简单的“helloworld”C++程序,但gdb无法识别可执行文件格式。但是,我能够在命令行上成功运行可执行文件。这是代码#includeusingnamespacestd;intmain(){cout我使用命令编译程序文件TestProject.cppg++-gTestProject.cpp-ohello然后要调试,我给出命令gdb./hello我收到以下错误信息GNUgdb(Ubuntu7.11.1-0ubuntu1~16.5)7.11.1Copyright(C)2016FreeSoftwareFoundation,Inc.Licens

c++ - gdb 没有捕捉到 vector 抛出的 std::out_of_range

使用MinGW4.6.2(使用g++-g-std=c++0x)编译以下内容,如果我尝试,gdb似乎不想捕获std::out_of_range>catch。如果我手动throw它可以正常捕获,我是不是做错了什么?#include#includeintmain(){std::vectorvec(10);try{vec.at(10);//thiswon'tbecaughtbygdb//throwstd::out_of_range("");//thiswill}catch(std::out_of_rangeconst&e){}} 最佳答案

c++ - gdb 地址和 "real"地址之间的区别?

如果我在gdb中运行一个C/C++程序(在使用-g标志编译之后)并检查某些变量、参数等的地址,然后我在gdb之外运行它(使用./)这些地址会和我在gdb中看到的一样吗?如果它们不同,它们通常是相似的还是会完全不同?我问这个是因为我有一个缓冲区溢出程序可以在gdb中完美运行(有断点和没有断点),但是当我尝试在gdb之外运行它时它不起作用。 最佳答案 Iexaminetheaddressesofcertainvariables,arguments...etc,andthenIrunitoutsideofgdb(using./)willt

c++ - 如何在 C 语言的 gdb 中调试 St9bad_alloc 失败?

我有一个程序失败了:terminatecalledafterthrowinganinstanceof'std::bad_alloc'what():St9bad_alloc我想这与malloc/free有关,但我不知道是哪一个。我可以在gdb中设置什么断点来中断错误,以便我可以查看堆栈跟踪?该程序是C和C++的组合,使用gcc3.4.2编译。 最佳答案 导致异常的并不是真正的malloc/free,它是“新的”,它肯定在您的应用程序的C++部分中。看起来您提供的参数对于"new"分配来说太大了。'std::bad_alloc'是由以下

使用 gdb 和 bazel(和 emacs)进行 C++ 调试

我想调试用Bazel生成的可执行文件。gdb调试器丢失了Bazel生成的链接,无法向我显示C++源代码。如何解决?项目根目录是/home/.../Cpp/./Cpp/├──bazel-bin->/home/picaud/.cache/bazel/_bazel_picaud...├──bazel-Cpp->/home/picaud/.cache/bazel/_bazel_picaud...├──bazel-genfiles->/home/picaud/.cache/bazel/_bazel_picaud...├──bazel-out->/home/picaud/.cache/bazel/

c++ - 在 Windows 上使用 gdb 调试 MinGW 程序,而不是在断言失败时终止

如何在window上设置gdb,使其不允许断言失败的程序终止?我打算检查程序中的堆栈跟踪和变量。例如,在gdb中运行使用MinGW'g++-gtest.cpp-otest'编译的test.cpp程序:#includeintmain(intargc,char**argv){assert(1==2);return0;}给予:$gdbtest.exeGNUgdb6.8Copyright(C)2008FreeSoftwareFoundation,Inc.LicenseGPLv3+:GNUGPLversion3orlaterThisisfreesoftware:youarefreetochang