草庐IT

虚拟调试

全部标签

c++ - 如何通过 gdb 调试 nodejs 插件

标题我正在编写一个Node.JsC++插件,当我尝试按照我在互联网上搜索的方式调试我的C++添加时,它根本无法工作。我从网上得到的是gdbNode设置参数app.js运行我明白了/usr/local/bin/node":不是可执行格式:无法识别文件格式在类型文件/usr/local/bin/node之后我明白了/usr/local/bin/node:具有2种架构的Mach-O通用二进制文件/usr/local/bin/node(forarchitecturei386):Mach-Oexecutablei386/usr/local/bin/node(forarchitecturex86_

c++ - 在 VS2010 调试器中可视化 OpenCV 图像

对于VS2012,优秀的ImageWatch扩展可用,它允许您在调试期间查看cv::Mat的实际图片。但是,不幸的是,它需要VS2012。有没有办法在VS2010中可视化cv::Mat?我知道https://bitbucket.org/sergiu/opencv-visualizers,但它们只是更好地格式化数据,它们不会像ImageWatch那样将其显示为图片(或者我找不到选项/标签?)。那么在VS2010中不可能做到这一点吗? 最佳答案 我找到了一个可以执行此操作的扩展程序。它称为NativeViewer。关注theirquic

c++ - 在 C++ 中定义虚拟 get 和 set 函数被认为是一种好的做法吗?

如果我有一个简单的2级类层次结构,例如这个://level1classSpare_Part{private:stringname;doubleprice;public:Spare_Part();stringgetName(){returnname;}doublegetPrice(){returnprice;}virtualintgetQuantity(){return-1;};//mayalsodefineitaspurevirtual};//level2classOn_hand:publicSpare_Part{private:intquantity;stringlocation;p

c++ - 虚拟调度后调用基础成员(模拟类似虚拟析构函数的调度)

虚拟调度只是选择“正确”的东西在层次结构中调用。我想实现类似于析构函数行为的功能,其中首先调用派生析构函数,然后调用层次结构中的所有析构函数,直到最上层。客户端应该只定义成员函数,调用顺序应该自动解析。我有一个使用CRTP且没有虚拟调用的解决方案草案;它有其优点和缺点:#include#includeusingnamespacestd;templatestructDispatcher{voidf(){((T*)this)->f();std::cout{voidf(){std::cout>obj=make_shared();obj->f();}Demo这样用户就可以简单地从调度器派生并定

c++ - 调试断言失败。C++ vector 下标超出范围

下面的代码应该删除vector中的重复值。例如,如果vector包含{1,5,3,3},则结果应为{1,5,3}。程序启动,我输入整数n*。但是,程序会抛出以下错误:Debugassertionfailed.Program:...\include\vectorline:932Expression:vectorsubscriptoutofrange.当我按下重试时,visualc++显示一个新窗口:"try.exehastriggeredabreakpoint".然后,我点击继续后,出现另一个错误:DebugAssertionFailed!Program:...\include\vect

c++ - 纯虚拟 friend 类

我有课A有一个指向纯虚类实例的指针B.类C源自B并且会自动有一个指向A的指针(它是它的父级),并且需要访问它的成员。这可以通过添加friendclassC来实现内部类A,虽然这对于将从B派生的每个类都是必需的.代码示例:classA{public:friendclassB;//ThisdoesnotallowderivedclassestobefriendsfriendclassC;//NowderivedclassBhasaccessto`DoDomething`,butthenthisisneededforeverysinglederivedclassprivate:voidDoD

c++ - Android Studio 中外部剥离共享库的原生调试

我已剥离和未剥离共享库。如何在使用LLDB在AndroidStudio中调试剥离时加载符号?我可以成功调试位于“jniLibs”文件夹中的完整未剥离的.so。但是它太大了,部署时间太长。在调试配置中指定符号目录不适用于标准和实验插件。 最佳答案 您需要使用“--build-id”标志链接您的库,以便AndroidStudio中的LLDB可以找到它,而不是从设备中提取它。如果您使用NDK工具链,只需将以下内容添加到您的链接器标志中:'-Wl,--build-id'您可能还需要告诉AndroidStudio在哪里寻找未剥离的库(如果您自

c++ - Visual Studio 2015:std::vector 的可视化不在调试中显示信息

我安装了visualstudio2015的新更新,现在版本14.0.25424.00和更新3。安装更新后,调试时std::vectors的可视化发生了变化。通常当我调试程序时,我可以看到std::vector的大小和项目。更新后我只能看到std::vector的原始View。这是我用于此示例的代码:intmain(){inta=1;std::vectorvecOfInt;vecOfInt.push_back(1);vecOfInt.push_back(2);vecOfInt.push_back(3);return0;}我认为可能在更新期间visualstudio中的某些设置发生了变化,

c++ - 为什么不调用虚拟基础非默认构造函数,除非大多数派生基础显式调用它们?

我想了解为什么C++标准要求虚拟基础非默认构造函数不能由非最派生的中间体调用类,如此代码中所示,当使用“-D_WITH_BUG_”编译时:/*Avirtualbase'snon-defaultconstructorisNOTcalledUNLESS*theMOSTDERIVEDclassexplicitlyinvokesit*/#include#include#includeclassA{public:int_a;A():_a(1){std::cerr因此,当编译时没有-D_WITH_BUG_,代码打印:$g++-I.-std=gnu++17-mtune=native-g3-fPIC-

c++ - C++ 中的虚拟析构函数与普通方法

考虑以下三个C++程序:节目1structbase{virtual~base()=0;};structderived:publicbase{~derived();};derived::~derived(){}intmain(){}节目2structbase{virtual~base()=0;};structderived:publicbase{~derived(){}};intmain(){}节目3structbase{virtualvoidfunc()=0;};structderived:publicbase{voidfunc();};voidderived::func(){}int