草庐IT

Xcode14调试iOS17

全部标签

c++ - 使用 gdb 调试 C++ 模板

当我在带有模板的函数内部调试时,我如何知道当前函数正在使用哪种模板类型?我试过了pT.它说gdb无法打印类型。如何中断特定模板类型?假设函数foo(...)有2种可能的形式,foo(...)和foo(...).如何设置断点以便gdb仅在第一个使用int的断点处暂停,但不是第二个使用long的?编辑:如果断点可以按行号设置就好了。这有很多很好的理由,例如。函数的初始部分可能需要很长时间才能运行,我希望调试的地方可能在if中声明等 最佳答案 要为所有实例设置断点,请使用:gdb>rbreakFoo只在已知实例上设置断点gdb>break

c++ - 默认情况下在 Sublime Text 3 中将程序编译为 c++ 14

我知道我们可以使用g++编译器将程序编译为C++。但是g++编译器默认是98版本。要将其作为C++14运行,我们需要在终端中添加-std=c++14。SublimeText由于其轻量级和功能而被认为是竞争性编程的有值(value)的编辑器。在这些比赛中,时间很重要,因此时间被浪费在复制文本文件然后从终端运行。与98相比,C++14具有丰富的库和其他重要功能。因此,人们希望能够在sublimetext和C++14上编译代码。但是我如何确保在SublimeText3中编译代码时,它默认编译为C++14?经过一番摆弄后,我想出了以下解决方案-转到包并提取C++.sublime-package

C++17 支持 Eclipse Neon

我读了here尽管规范尚未完全准备好,但C++17功能完备。如何在我的代码中使用C++17功能,尤其是在EclipseCDT(Neon)中?具体来说,我想使用文件系统来轻松地遍历目录。 最佳答案 libc++和libstdc++在最近的版本中都有一个std::experimental::filesystem。我不知道直接拥有std::filesystem;C++17还没有完全发布,这似乎是合理的。boost有boost::filesystem,它们在一些方面有所不同,但结构几乎相同。使用boost::filesystem编写的代码可

C++ 调试窗口显示“<incomplete type> for string variable

据我所知,我正在以一种相当正常的方式初始化一个字符串,当我调试时,我的IDE(CLion)中的变量窗口将其值显示为.我有一些简单的代码导致字符串变量Bob出现问题.#includeintmain(){std::stringBob="thisdoesn'tshowupinthevariableswindow";std::cout我不知道它有什么影响,但我会包含CMakeLists文件,它似乎是我可以使用的最简单的文件。cmake_minimum_required(VERSION3.8)project(testing123)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_F

c++ - C++14封装大量参数

我想编写一个使用很多参数的函数,我将其称为a、b和c。我有四种在C++14中实现它的选择。对于2018年新的现代C++项目,这些风格中的哪一种最符合ISOC++的理念??其他风格指南推荐哪些风格?面向对象风格classComputer{inta,b,c;public:Computer(inta,intb,intc):a(a),b(b),c(c){}intcompute(int)const{//dosomethingwitha,b,c}};...constComputercomputer(a,b,c);intresult=computer.compute(123);优点:C++程序员容易

c++ - VS Code 上的简单 GDB C++ 调试失败并出现 NullReferenceException

我的源代码file.cpp:#includeusingnamespacestd;intmain(){intx=1;inty=2;cout我使用g++-gfile.cpp编译它,然后我的launch.json文件是这样的:{"version":"0.2.0","configurations":[{"name":"(gdb)Launch","type":"cppdbg","request":"launch","program":"${workspaceFolder}/a.out","args":[],"stopAtEntry":false,"cwd":"${workspaceFolder}

c++ - OpenCV cvLoadImage() 不在 visual studio 调试器中加载图像?

我正在尝试为OpenCV设计一个简单的helloworld,但我想不出为什么它不起作用。当我编译并运行这段代码时:#include#includeintmain(intargc,char*argv[]){IplImage*img=cvLoadImage("myjpeg.jpg");cvNamedWindow("MyJPG",CV_WINDOW_AUTOSIZE);cvShowImage("MyJPG",img);cvWaitKey(0);cvReleaseImage(&img);cvDestroyWindow("MyJPG");return0;}我得到一个大约200x200的灰色框,而

c++ - 线程相关问题及调试

这是我对上一篇关于内存管理问题的帖子的跟进。以下是我知道的问题。1)数据竞争(原子性违规和数据损坏)2)排序问题3)滥用锁导致死锁4)海森堡多线程还有其他问题吗?如何解决? 最佳答案 Eric列出的四个问题非常准确。但是调试这些问题很困难。对于死锁,我一直偏爱“水平锁”。本质上,您为每种类型的锁指定了一个级别编号。然后要求线程获取单调的锁。要进行水平锁定,您可以声明这样的结构:typedefstruct{os_mutexactual_lock;intlevel;my_lock*prev_lock_in_thread;}my_lock

c++ - 使用 Google Test 调试 C++ 项目时禁用异常处理

我有我的(nativeC++)DLL项目和基于GoogleTest的相应测试EXE项目。通过此EXE调试我的DLL时,GoogleTest会自动处理异常。因此,如果我的DLL在调试期间抛出未处理的异常,我希望看到来自VisualStudio的错误消息,其中调试session在代码导致异常后暂停。相反,我在gtest.cc中触发了断点。如果我禁用--gtest_break_on_failure标志,我将不会收到任何中断。我在Google测试文档中找不到这样的选项。我错过了吗?我不想在调试设置中检查不同异常的“抛出时中断”标志,因为我只对未处理的异常感兴趣。 最

c++ - 在 Windbg 中,如何在调试时列出枚举的值?

通常,enum值是简单的编译器增量值或直接设置为整型文字,因此可以通过查看源文件轻松推导出或直接看到这些值。但是,有时enum值用于将类内常量设置为等于在别处定义的值或不容易复制的编译时表达式的结果。有没有办法让Windbg向我显示每个enum成员在那些更棘手的情况下的实际值? 最佳答案 考虑这个小结构:structfoo{enumenum1{enum1_val1_=5,enum1_val2_,};enumenum2{enum2_val1_=0x0001,enum2_val2_=0x0010,};enum{//assumethese