草庐IT

DEBUGGING

全部标签

C++ 堆损坏

我已经有一段时间没有使用任何C++了,但我决定完成我为某人所做的一个大项目。不过,我现在收到以下错误消息...检测到堆损坏:在0x17DEB940处的正常block(#1761)之后。CRT检测到应用程序在堆缓冲区结束后写入内存。我一直在逐步执行我认为可能导致它的所有功能,但我不知所措。有什么方法可以使用更高级的调试功能来解决这个问题吗? 最佳答案 这听起来确实像是典型的内存损坏错误。该平台将是有用的信息。在没有看到您的代码及其复杂性的情况下,有两种可能性:我会猜测运行时库将允许您添加对堆验证代码直接来自你的代码。我建议放置调用堆验

c++ - 在 Code::Blocks 中调试似乎不起作用 - 缺少调试符号

我正在尝试调试Code::Blocks中的程序。我尽可能地遵循了thisguide和thisshortvideo,但是调试器不会在断点处停止...我看到一个similarquestion仍然没有解决(我不确定我是否应该解决它或打开一个包含更多细节的新问题),我确实选中了“Producedebuggingsymbols[-g]”标志。优化和“去除所有符号[-s]”也都被禁用。我什至尝试了标志-ggdbassuggestedthere,也没有成功。我正在使用TDM-GCC4.5.2(我刚刚升级,之前我与4.5.1有同样的问题),调试器是GNUgdb(GDB)7.2(之前与GDB7.1有同样

c++ - 如何在 C++ 中解释以下错误消息

我没有使用C++的经验,并且获得了一个应该能够在没有任何调试的情况下运行的代码,但是,当我尝试编译它时出现了一堆错误。我只需要一些关于如何开始调试它的指导,我们将不胜感激。这是错误消息:mpicc-c-O3curvilinear_grid.cppInfileincludedfromparameters.h:12:0,fromcurvilinear_grid.h:13,fromcurvilinear_grid.cpp:6:parameter_file_parser.h:Inmemberfunction‘intPARAMETER_FILE_PARSER::Parse_Parameter_F

java - 使用 Java JNI 时是否可以调试核心转储?

我的应用程序主要是Java,但对于某些计算,使用C++库。我们的环境是在RedHat3(即将成为RedHat5)上运行的Java1.6。我的问题是C++库不是线程安全的。为了解决这个问题,我们运行多个单线程“工作”进程,并从同样用C++编写的中央工作管理器为它们分配工作。我们的Java应用程序通过第三方产品调用C++工作管理器。由于各种原因,我们想重写C++WorkManager和workers。我赞成全部用Java编写,在每个worker中使用JNI来调用C++库。主要问题是如果C++库核心转储会发生什么。不幸的是,这很常见,我们需要能够看到C++库中的哪一行导致了问题,例如通过检查

c++ - 无法在 Debug模式下编译解决方案,因为缺少 MSVCR100D.dll

我在装有Windows8的64位计算机上运行MicrosoftVisualStudioExpress2012forWindowsDesktop。我创建了一个全新的Win32控制台应用程序(在C++中)并接受默认选项。然后,我在调试和Release模式下构建并运行该解决方案,它可以正常工作。接下来我为dynamicSFML配置包含和库目录图书馆。我链接到debug和release.lib文件,并将debug和release.dll文件放在正确的目录中。然后我添加一些使用该库的简单代码,在Debug模式下构建和运行应用程序,我收到此错误:“程序无法启动,因为您的计算机缺少MSVCR100D

c++ - 我如何在 visual studio 的监 window 口中列出和监视所有全局变量(对于 c++)?

当在main()的断点处停止时,我可以手动将全局变量的名称添加到监window口,但我想要的是如何显示所有全局变量的列表,因为我使用的是外部库,其中包含许多静态的东西。可能吗?提前致谢! 最佳答案 是你不知道全局变量名的问题吗?或者是你想查看很多全局变量而不想在监window口中一遍又一遍地键入它们的问题?目前我假设是第二种。我还假设您的外部库是.LIB库而不是.DLL。您可以编写一个类,其中包含您要监视的每个全局变量的一个成员,使其成为一个引用,并在启动时构造该类的一个实例,将全局变量分配给引用成员,如下所示:classMyGlo

c++ - Ramer-Douglas-Peucker 路径简化算法

我在阅读这里的文章后实现了一个路径简化算法:http://losingfight.com/blog/2011/05/30/how-to-implement-a-vector-brush/它非常适合我为我的游戏生成优化的关卡几何体。但是,我现在正在使用它来清理a*寻路路径,它有一个奇怪的边缘案例,失败得很惨。这是它工作的屏幕截图-优化从红色圆圈到蓝色圆圈的路径。淡绿色线是a*输出,浅白色线是优化路径。这是失败的截图:这是我的代码。我将文章中的ObjC代码改编为C++备注:vec2fvec是std::vector>,而“real”只是一个typedef的float。voidrdpSimpl

Android NDK 找到动态链接 : unable to debug library

我有一个项目可以很好地在android设备上编译、加载和运行。当我调用gdb服务器时,它也能正常工作。然后,当我调用gdb客户端运行断点时,消息出现:Errorwhilemappingsharedlibrarysections:/system/bin/linker:Nosuchfileordirectory.libandroid.so:Nosuchfileordirectory.liblog.so:Nosuchfileordirectory.libEGL.so:Nosuchfileordirectory.libOpenSLES.so:Nosuchfileordirectory.libG

c++ - 如何在 C++ 头文件上使用 gdb?

我试图在网上搜索这个问题,但似乎找不到解决我问题的好方法。好吧,我正在尝试使用gdb来调试我的C++程序。该程序由一个简单的main.cpp和一个model.h组成。编译命令为g++-Wall-g-cmain.cppg++-Wall-gmain.o-oOUTPUT由于几乎所有算法都存储在model.h中,因此我需要调试该头文件而不是cpp文件。但是,每当我尝试在标题上放置一个断点时tbreakmodel.h:163gdb总是给我一条消息“没有名为TNFmodel.h的源文件”。在另一个问题中breakpointsinGDB,我看到了一个解决方案,通过“dir”将包含标题的文件夹添加到库

c++ - 我的 Visual C++ 程序可以监听它自己的调试输出吗?

我的程序使用了大量第三方库,有时会将有用的错误消息放入调试器输出(使用OutputDebugString())。我的程序能否以某种方式以编程方式访问该输出,以便它可以解析它并以某种更方便的方式向我报告它? 最佳答案 没有API可以让您访问通过OutputDebugString输出的字符串。获取数据有两种方式:坏主意:实现OutputDebugStringprotocol的客户端.更好的主意:HookOutputDebugStringA函数。OutputDebugString协议(protocol)仅支持单个监听器,因此第一种方法与应