草庐IT

虚拟调试

全部标签

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

调试连接到WireMock的SSL握手错误

当我尝试连接到WireMock时,我会遇到隐秘的SSL握手错误-error:140790E5:SSLroutines:ssl23_write:sslhandshakefailure:s23_lib.c:177:WireMock独立运行--https-keystore指向我已验证的证书keytool。常规的HTTP模拟工作正常。我打开--print-all-network-traffic当我打电话openssls_client-connect127.0.0.1:443-showcerts-status-state-debug这就是我看到的:2017-07-0823:36:55.881Opened

【开源】串口/蓝牙/TCP/UDP调试工具SerialTest

可在Windows/Linux/Android上运行,功能丰富的调试工具。支持数据收发/实时绘图/快捷方式/文件收发功能。支持串口/蓝牙SPP客户端/蓝牙SPP服务器/蓝牙BLE客户端/TCP客户端/TCP服务器/UDP调试。使用Qt开发,在Github上开源特点跨平台支持Windows/Linux/Android理论上可支持MacOS串口调试功能显示系统所有可用串口及参数,无需打开设备管理器/查看dmesg可以设置波特率,数据位,停止位,校验方式,流控方式,可在串口打开时实时更改可以控制DTR,RTS信号,显示CTS,DSR,DCD,RI(RNG)信号保存上一次连接的参数按照端口名或设备ID

使用控制台窗口进行 C++/SDL 调试

我正在玩弄一些OpenGL,使用SDL来处理窗口/输入等。目前我正在向HUD显示我想看到的任何信息。好吧,这太麻烦了,我想知道是否有一种简单的方法可以打开一个单独的控制台窗口来向我报告此信息。我对C++还是个新手,所以如果这是一个明显的问题,请放轻松。 最佳答案 以下代码适用于Windows。我总是发现保留按需创建控制台窗口的功能很方便:inthConHandle;intptr_tlStdHandle;CONSOLE_SCREEN_BUFFER_INFOconinfo;FILE*fp;//allocateaconsoleforthi

c++ - 为什么 google breakpad 不能处理所有崩溃?我该如何调试这些案例?

我正在使用google-breakpad.这是一个错误报告程序,在后台运行以报告另一个进程的崩溃。它几乎适用于所有情况。然而,它有时无法捕捉到崩溃。没有报告,也没有转储文件。它只是崩溃。崩溃的最后线索是Windows事件消息。如何调试这些崩溃?什么会导致Breakpad无法处理崩溃?我可以使用哪些方法来调试这种情况? 最佳答案 在某些情况下,VisualC++C/C++运行时库会移除使用SetUnhandledExceptionFilter设置的钩子(Hook);例如,当它检测到缓冲区溢出或其他安全问题时。ThisMicrosoft

c++ - 即使选择了调试构建,Qt Creator 的智能感知也会使#ifdef _DEBUG block 变灰

当我的代码中有这样的#ifdef#ifdef_DEBUGprintf("Thisisadebugbuild");#endifQtCreator将printf变灰,即使它是一个调试版本,当我运行它时“Thisisadebugbuild”被打印出来。智能感知似乎没有看到将通过命令行(即-D_DEBUG)传递给编译器的预处理器定义,而不是在头文件/源文件中定义。 最佳答案 以下内容在我的*.pro文件中运行良好:CONFIG(debug,release|debug):DEFINES+=_DEBUG切换构建类型也会切换灰色区域。不过,我使用

c++ - 如何检测c++中是否附加了调试器?

我创建了一个宏,#defineDEBUG_BREAK(a)if(a)__asmint3;但问题是如果没有附加调试器,程序将无法正常运行。所以我需要知道是否附加了调试器。如果有调试器,应用程序应调用int3。否则,它不应该。我该怎么做? 最佳答案 对于您想做的事情,最好使用适当的公开kernel32.dll函数DebugBreak.基本上按照#defineDEBUG_BREAK(a)if(a)if(IsDebuggerPresent())DebugBreak()或者不执行__asmint3例程,而是使用VC提供的内部__debugbr

c++ - 如何调试 std::bad_cast 异常

classGAGenome{virtualvoidmethod(){};};templateclassGAArray{};templateclassGA1DArrayGenome:publicGAArray,publicGAGenome{};intmain(){GA1DArrayGenomegenome;constGAGenome&reference=genome;autocast=dynamic_cast&>(reference);}这个明显错误的程序(因为模板参数不同)崩溃了terminatecalledafterthrowinganinstanceof'std::bad_cast

c++ - 如何保存 Visual Studio C++ 调试 session 的状态?

我正在使用VisualStudioC++2013。我正在运行一个数字计算器程序,因此它可以线性/可预测地进行。但是我有一个测试需要几个小时才能运行,然后由于我的代码中的逻辑错误而断言。我可以在崩溃前得到一个断点,但我不能在不从头开始的情况下后退。有什么方法可以让VisualStudio保存我的程序状态,以便我可以在那个点重新启动?程序状态非常复杂,我自己将所有状态保存到文件中以供稍后恢复需要大量工作。 最佳答案 在VisualStudio中调试时(即使是从断点)使用Debug|SaveDumpAs...来保存当前的调试状态。保存时,