草庐IT

DEBUGGING

全部标签

c++ - 在 Clion 的调试器中,如何显示一个 int 数组的全部内容

现在它只显示数组的第一个元素,但我想要查看数组中的所有元素。我认为Clion正在使用GDB。编辑:我特指堆上的数组。堆栈上的数组可以可视化。 最佳答案 cubuspl42的回答适用于GDB。但是如果你在Mac上使用LLDB作为调试器,那么正确的方法是(MyType(*)[128])myArray希望这会有所帮助! 关于c++-在Clion的调试器中,如何显示一个int数组的全部内容,我们在StackOverflow上找到一个类似的问题: https://sta

c++ - 如何在调试字符串的函数中获取函数名称?

我想在每次调用时输出函数名,我可以轻松复制和粘贴函数名,但是我想知道是否有一个快捷方式可以为我完成这项工作?目前我正在做:SlideInfoHeader*lynxThreeFile::readSlideInfoHeader(QDataStream&in){qDebug("lynxThreeFile::readSlideInfoHeader");}但我想要的是通用的:SlideInfoHeader*lynxThreeFile::readSlideInfoHeader(QDataStream&in){qDebug(this.className()+"::"+this.functionNam

c++ - 如何在调试字符串的函数中获取函数名称?

我想在每次调用时输出函数名,我可以轻松复制和粘贴函数名,但是我想知道是否有一个快捷方式可以为我完成这项工作?目前我正在做:SlideInfoHeader*lynxThreeFile::readSlideInfoHeader(QDataStream&in){qDebug("lynxThreeFile::readSlideInfoHeader");}但我想要的是通用的:SlideInfoHeader*lynxThreeFile::readSlideInfoHeader(QDataStream&in){qDebug(this.className()+"::"+this.functionNam

c++ - 在 GDB 上编辑并继续

我知道E&C是一个有争议的主题,有人说它会鼓励错误的调试方法,但是-我认为我们可以同意在很多情况下它明显有用-尝试一些常量的不同值,即时重新设计GUI参数以找到好看的外观......您可以命名它。我的问题是:我们是否会在GDB上进行E&C?我知道这是一个特定于平台的功能,需要与编译器、调试器和操作系统进行认真的合作(MSVC很容易做到这一点,因为编译器和调试器总是在一个包中),但是......它仍然应该是可行的。我什至听说过Apple在他们的GCC版本中实现了它[需要引用]。我会说这确实是可行的。了解所有关于MSVC的E&C的炒作(我的经验表明这是MSVC用户在被问及“为什么不切换到E

c++ - 在 GDB 上编辑并继续

我知道E&C是一个有争议的主题,有人说它会鼓励错误的调试方法,但是-我认为我们可以同意在很多情况下它明显有用-尝试一些常量的不同值,即时重新设计GUI参数以找到好看的外观......您可以命名它。我的问题是:我们是否会在GDB上进行E&C?我知道这是一个特定于平台的功能,需要与编译器、调试器和操作系统进行认真的合作(MSVC很容易做到这一点,因为编译器和调试器总是在一个包中),但是......它仍然应该是可行的。我什至听说过Apple在他们的GCC版本中实现了它[需要引用]。我会说这确实是可行的。了解所有关于MSVC的E&C的炒作(我的经验表明这是MSVC用户在被问及“为什么不切换到E

c++ - 在 gdb 中中断失败断言的正确方法是什么?

我试图在我的程序中捕获失败的断言。我正在使用一个直接调用assert()的库,而不是自定义函数或宏,我目前正试图在这个库中跟踪几个与移植相关的错误。所涉及的所有内容都已使用g++中的调试符号编译。我发现的最佳解决方案是在断言的文件:行处中断,并使用断言表达式的条件。这允许在断言失败之前停止断言,但这是一个可怕的解决方案。它需要对每个可能失败的断言进行特殊设置,在我的IDE中无法使用,而且总体上需要付出太多努力。如何使用gdb和gcc打破任何失败的断言,以允许检查断言调用范围内的调用堆栈和变量?如果解决方案允许我放弃断言的失败并继续运行,那就更好了。 最佳答案

c++ - 在 gdb 中中断失败断言的正确方法是什么?

我试图在我的程序中捕获失败的断言。我正在使用一个直接调用assert()的库,而不是自定义函数或宏,我目前正试图在这个库中跟踪几个与移植相关的错误。所涉及的所有内容都已使用g++中的调试符号编译。我发现的最佳解决方案是在断言的文件:行处中断,并使用断言表达式的条件。这允许在断言失败之前停止断言,但这是一个可怕的解决方案。它需要对每个可能失败的断言进行特殊设置,在我的IDE中无法使用,而且总体上需要付出太多努力。如何使用gdb和gcc打破任何失败的断言,以允许检查断言调用范围内的调用堆栈和变量?如果解决方案允许我放弃断言的失败并继续运行,那就更好了。 最佳答案

c++ - std::cout 不会打印

std::cout有没有什么情况?不工作?我有一个c/c++代码,但是std::cout不打印任何内容,甚至不打印常量字符串(例如“hello”)。有什么方法可以检查cout是否能够/无法打开流?有一些成员函数,如good(),bad(),...但我不知道哪一个适合我。 最佳答案 确保刷新流。这是必需的,因为输出流是缓冲的,除非您自己手动刷新缓冲区,否则您无法保证何时刷新缓冲区。std::coutstd::endl将输出换行符并刷新流。或者,std::flush将只是进行刷新。也可以使用流的成员函数来完成刷新:std::cout.f

c++ - std::cout 不会打印

std::cout有没有什么情况?不工作?我有一个c/c++代码,但是std::cout不打印任何内容,甚至不打印常量字符串(例如“hello”)。有什么方法可以检查cout是否能够/无法打开流?有一些成员函数,如good(),bad(),...但我不知道哪一个适合我。 最佳答案 确保刷新流。这是必需的,因为输出流是缓冲的,除非您自己手动刷新缓冲区,否则您无法保证何时刷新缓冲区。std::coutstd::endl将输出换行符并刷新流。或者,std::flush将只是进行刷新。也可以使用流的成员函数来完成刷新:std::cout.f

c++ - 使用 gdb 在 Eclipse 中调试简单 C++ 时出现 "No source available for main()"错误

我在OSX上的Eclipse(Helios的最新RC,使用最新的CDT更新)在OSX上调试C++程序时遇到问题。程序非常简单(基本上是NeHe的OpenGL教程的第2课),由一个cpp文件组成,使用OpenGL和Cocoa框架,并与libSDL.a和libSDLmain.a链接。项目的结构非常简单:源文件位于项目的子目录src/中,可执行文件构建到项目的根目录中。问题是,每当我尝试添加断点并对其进行调试时,断点似乎被完美命中,但没有显示任何源-相反,我只是在代码窗口中收到“没有可用于main()的源”错误。编译器标志的优化设置为无,编译器和链接器都设置了调试符号标志(-g)。Eclip