我有一个C++应用程序。当我在visualstudio应用程序中按F5时,我可以调试它。但是当我从windows资源管理器运行应用程序然后在visualstudio中附加此过程时,我看到断点可以被击中(它们完全是红色的)但断点没有被击中。当我看到模块窗口时,那里什么也没有。有什么问题? 最佳答案 验证代码类型VisualStudio配置为加载符号。AttachToProcess对话框有SelectCodeType选项来指定要加载的符号。您可以在此处选择托管符号和/或native符号。程序集也应该是相同的版本。
最近我从Windows7中的VisualStudio切换到带有Netbeans8.0(C++)的Ubuntu。从那时起,我在从NetBeans调试我的应用程序时遇到了很大的问题(gdb工作得很好)。我用gradle编写了helloworldc++来演示我的问题。我花了很多时间,但没有任何重大进展。Gradle项目build.gradle:applyplugin:'cpp'executables{helloWorld}binaries.all{cppCompiler.args"-g"}主要.cpp:#include#includeintmain(void){inta=10;intb=12
我正在维护一个用C++编写的遗留应用程序。它时不时地崩溃,Valgrind告诉我它对某些对象进行了双重删除。在您不完全理解且太大而无法重写的应用程序中找到导致双重删除的错误的最佳方法是什么?请分享您最好的提示和技巧! 最佳答案 在这种情况下,这里有一些对我有帮助的一般性建议:如果您使用记录器,请将您的记录级别提高到完全调试。在输出中寻找可疑内容。如果您的应用程序没有记录可疑对象/类的指针分配和删除,那么是时候插入一些cout了。代码中的语句(以及相应的delete/destructor打印)。使用--db-attach=yes运行v
我有两个C++函数重载,我想在其中一个上设置断点:0:000>bumyexe!displayerrorMatched:00000000`ff3c6100myexe!displayError(int,HRESULT,wchar_t*)Matched:00000000`ff3c60d0myexe!displayError(int,HRESULT)Ambiguoussymbolerrorat'myexe!displayerror'哎呀,我可以在所有重载上设置断点,但似乎无法弄清楚如何:0:000>bumyexe!displayerror*Matched:00000000`ff3c6100my
我已经下载了为MSVC9/VS2008构建的Qt4二进制版本。我从安装文件安装它,我没有从源代码构建它。但是,我确实在以下位置找到了源:c:\QtSDK\QtSources\4.8.1\src:我还有PDB文件位于:c:\QtSDK\Desktop\Qt\4.8.1\msvc2008\lib因此,如果我同时拥有PDB和源代码,我应该能够进入源代码,即使我没有从源代码构建它。注意:我已经找到并阅读了一些询问如何进入Qt源代码的问题,但是它们要么是aboutLinux(实际上那个也是我的),或者theydon'tspecifywhetherit'scompiledfromsource或不(
我正在完成Windows系统编程的练习,但我没有完全理解LARGE_INTEGER和OVERLAPPED结构。例如,我在main中定义了以下结构。第一个结构用于跟踪记录数。第二个用于记录数据。作者定义并使用两个重叠结构来跟踪记录文件偏移量。typedefstruct_HEADER{DWORDnumRecords;DWORDnumNonEmptyRecords;}HEADER;/*8bytes*/typedefstruct_RECORD{DWORDreferenceCount;SYSTEMTIMErecordCreationTime;SYSTEMTIMErecordLastRefernc
我注意到我正在处理的nativeC++应用程序甚至在进入我的任何代码之前就占用了相当大的内存空间(20MB)。(我指的是Windows中的“私有(private)字节”度量,据我所知这是最有用的度量)。我在“main()”函数的第一行放置了一个断点,果然,当它到达时占用空间为20MB。EXE的大小只有几兆,因此不考虑在内。我还特意删除了所有DLL,以证明它们不是问题所在。正如预期的那样,它会收到“Dllnotfound”消息,但占用空间仍为20MB!然后我想知道可能是静态初始化的对象导致的。因此,我为“new”和“malloc”都添加了断点。第一次点击那些(对于第一个静态初始化程序),
我们的应用程序中有一个缓慢的内存泄漏,我已经通过以下步骤尝试分析泄漏的原因:在GFlags中启用用户模式堆栈跟踪数据库在Windbg中,键入以下命令:!heap-stat-h1250000(其中1250000是发生泄漏的堆的地址)比较多个转储后,我看到大小为0xC的内存块随时间增加,可能是泄漏的内存。键入以下命令:!heap-fltsc给出这些分配的UserPtr,最后:在其中一些地址上键入!heap-p-aaddress总是会显示以下分配调用堆栈:0:000>!heap-p-a10576ef8address10576ef8foundin_HEAP@1250000HEAP_ENTRYS
类似的问题是here和here我的情况是我在Windows10机器上使用Qt5.5和Qtcreator3.5。开始调试我的项目大约需要10到15秒。我的项目使用快速控制。我不确定这是否相关。在我的Qt创建器中我找不到CDB调试器。在我的根磁盘中搜索“cdb.exe”没有任何结果。我现在的装备是调试器:适用于MinGW4.9.232位的GNUgdb7.8编译器:MinGW4.9.232bitQt版本:Qt5.5.1MinGW32bit编辑:中央处理器:酷睿i73.3GHz内存:32GB固态硬盘是否有任何解决方法,或者我是否需要安装CDB并在Qtcreator中配置它?
在开发应用程序的过程中,我们特别遇到了一个非常讨厌的错误。症状很简单,就是进程消失了。日志突然结束,找不到故障转储或任何东西,不存在僵尸进程。Dr.Watson还没有注意到任何让我们无影无踪的东西。该错误重现并不简单,重现此错误平均需要3-4小时,重复执行相同的操作。所以某处存在某种竞争条件。我们有处理SEH异常和正常异常的特殊函数,所以这些都不应被忽视。调试必须在一台特殊的计算机上完成,因为它运行在非常专业的硬件上。所以只能远程调试。当连接远程调试时,C++构建器不会注意到应用程序丢失,并且当我们尝试对不存在的进程进行任何调试时崩溃和烧毁。我们在该软件中使用了多种技术:OpenGLD