草庐IT

Debug调试

全部标签

使用控制台窗口进行 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...来保存当前的调试状态。保存时,

c++ - 使用 biicode cmake 在 Debug模式下构建 C++

由于我无法从发布版本更改为调试版本类型,我想知道我做错了什么。我正在使用UnixMakefile。在docs.biicode.com/c++/building.html中说明了如何在CMakeLists.txt中添加SET()来向cmake添加变量。我是cmake和biicode的新手,我尝试了所有:ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE=Debug)ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE:STRING=Debug)SET(CMAKE_BUILD_TYPEDebug)target_compile_options(my_prog

基于Hive旅游数据的分析与应用 Hadoop+SpringBoot+Vue 前后端分离【毕业设计.课程设计·文档报告·代码讲解·安装调试】

⛄博主介绍:⚡全栈开发工程师,精通Web前后端技术、数据库、架构设计。专注于Java、Python、机器学习、大数据、爬虫等技术领域和小程序领域的开发,毕业设计、课程设计项目中主要包括定制化开发、源代码、代码讲解、文档报告辅导、安装调试等。✅文末获取联系✅目录1项目介绍 2技术选型 3功能需求分析 4系统总体设计 5项目效果图6代码实现  7总结  8源码获取或咨询 1项目介绍 随着计算机技术发展,计算机系统的应用已延伸到社会的各个领域,大量基于网络的广泛应用给生活带来了十分的便利。所以把旅游数据管理与现在网络相结合,利用计算机搭建旅游数据的分析与应用系统,实现旅游数据的信息化。则对于进一步提

c++ - Visual C++ 查找导致 "Debug Assertion failed"的行

我正在尝试获得一个C++程序,该程序在使用gcc编译时可以正常工作,以便在VisualC++上正常工作。我的问题是我现在收到以下错误:DebugAssertionFailed!Program:C:\WINDOWS\SYSTEM32\MSVCP110D.dllFile:c:\programfiles(x86)\microsoftvisualstudio11.0\vc\include\vectorLine:1140Expression:vectorsubscriptoutofrange我真正的问题是我不知道这发生在何时何地。通过在错误窗口中按下break,我只是被带到最终发生异常的vect

c++ - 阻止调试器进入功能

我正在寻找一种方法来阻止VisualStudio调试器在按F11时进入某些类和函数。或者阻止一些文件,这样IDE就不会打开它们,只需逐步执行(除非出现异常)。我知道这听起来有点愚蠢,但我正在使用智能指针和其他辅助类,许多重载运算符,简单表达式由许多函数调用组成,在优化时消失,所以这不是速度问题,但它是一个调试问题,一直打开和关闭那么多文件,经历了很多函数,不小心留下了目标代码等等。这是我正在谈论的例子:stepToThisFunction(objectOfIgnoreClass->ignoreFunction());当调试器在这一行时,按F11应该只输入stepToThisFuncti