草庐IT

Debug调试

全部标签

c++ - QMYSQL 驱动程序未在发行版中加载,正在调试中工作

我目前正在开发Qt5应用程序,该应用程序涉及将mysql数据库与QMYSQL一起使用。它在调试session期间就像一个魅力,但是当我在发布时编译它时,我得到错误:Drivernotloaded.Drivernotloaded.(是的,它实际上出现了两次)。我已经试过包括所有DLL,像这样:但这根本不起作用,我尝试调整qmake选项,但没有任何效果。有没有我不知道的把戏?注意:我使用的MySQL驱动是我自己编译的。 最佳答案 首先,您可能不应该在您的发行版中包含任何以“d”结尾的库。“d”表示调试,当您在调试中编译时,Qt会使用它们

c++ - 哪些因素使迭代器在 Debug模式下如此缓慢(VC++ 2012)

我有一个包含10000个随机数(mod100)的vector,我想计算其中两个数字之和为100的对数。我写了以下内容:autonoPairsSumTo100=0;constautoitEnd=end(myNums);for(autoit1=begin(myNums);it1!=itEnd;++it1){for(autoit2=it1;it2!=itEnd;++it2){if(*it1+*it2==100){noPairsSumTo100++;}}}在我的机器上,这需要大约21.6秒才能在Debug模式下运行。如果我设置_ITERATOR_DEBUG_LEVEL=0(将_SECURE_S

c++ - 启用 _GLIBCXX_DEBUG 后,Stringstream 无法使用 double

我正在使用_GLIBCXX_DEBUG模式来帮助查找我的代码中的错误,但我遇到了一个问题,我认为这是库中的一个错误,但希望有人能告诉我我只是做错了什么。这是一个重现问题的简短示例:#define_GLIBCXX_DEBUG#include#includeintmain(intargc,constchar*argv[]){std::ostringstreamostr;ostr如果我注释掉#define,那么输出是(如预期的那样):Result:1.2有了_GLIBCXX_DEBUG定义,但是输出很简单:Result:我已经追踪到流的_M_num_put字段被保留为NULL,这导致在流中抛

【Android 13】使用Android Studio调试系统应用之Settings移植(一):编译服务器的配置、AOSP源码的下载、编译、运行

文章目录1.篇头语2.系列文章3.ubuntu最佳版本3.1下载并安装3.2配置AOSP工具链3.3配置Python多版本支持4.AOSP源码下载4.1配置repo工具4.2源码下载5.AOSP编译5.1添加emulator模拟器配置5.1.1哪些是支持模拟器的Products?5.1.2添加方法5.2编译

c++ - 如何使用 QtCreator 调试 DLL 项目?

我已经使用QtCreatorIDE编写了一个用mingw编译的非QtCDLL。当我将DLL注入(inject)进程时,DLL导致该进程在特定代码行崩溃。通过使用OutputDebugString,我发现这一行是罪魁祸首。我知道如何修复该行,并且当该行被修改时DLL可以工作。但是,为了学习如何使用调试器,我保留了未修改的断行。我如何使用QtCreator调试器找到导致问题的同一行?当QtCreator设置为Debug模式编译时,按F5会出现如下对话框,因为没有EXE: 最佳答案 解决方案是在注入(inject)DLL之前运行附加到可执

c++ - NDEBUG 和 _DEBUG 在 Visual Studio 2015 中定义在哪里?

我可以转到默认VisualStudio2010项目的设置,并查看在“配置属性”>>“C/C++”>>中定义的NDEBUG或_DEBUG“预处理器”的“预处理器定义”:如果我转到默认VisualStudio2015项目的设置,“预处理器定义”是空的!我什至没有在VisualStudio2015.vcxproj中看到NDEBUG或_DEBUG。我知道它的定义是正确的,因为assert(false)只在调试配置中触发。Microsoft将这些定义隐藏在VisualStudio2015的什么地方?我可以修改它们吗,还是已经被我拿走了?编辑:Niall'sanswer是正确的。我不明白的是,如果

c++ - 调试堆栈损坏问题

我正在C++(VisualStudio2015)中的大型应用程序上调试“访问冲突”异常。该应用程序是由多个库构建的,问题发生在其中一个(SystemC)上,尽管我怀疑问题的根源在别处。我看到的是一个函数调用,它破坏了调用者的成员函数的地址。m_update_phase=true;m_prim_channel_registry->perform_update();m_update_phase=false;inlinevoidsc_prim_channel_registry::perform_update(){for(inti=m_update_last;i>=0;--i){m_updat

c++ - 有没有办法在 Visual C++ 调试后返回以前的状态?

所以当我想向前移动时,我可以使用f10/f11但我可以移动到之前的状态吗?不仅仅是之前的位置,因为如果我只是将光标移动或设置到之前的位置,这不会恢复变量的值。这不可能? 最佳答案 如果您愿意使用不同的调试器,您可以做到这一点。广发局supportsthisfeature.将GDB与MSVS结合使用留给读者和Google作为练习,但这里有一些有用的链接:HowcanIuseGDBfrominsideVisualStudioC++(Express)todebugmyGCCMakefileprojects?https://visualst

c++ - Qt 构建发布和调试库

我需要在没有GUI的Redhat后端机器上安装QtSDK。(亚马逊EC2)。当我尝试安装时,由于无法连接显示器而失败。然后我尝试下载源代码并编译。如果我使用configure-debug,它只会编译调试库。与仅当我指定-release时它才编译和安装发布二进制文件相同。同样在我的*.pro文件中,它链接了最后安装的版本,而不考虑CONFIG+=debug或CONFIG+=release我需要两种格式。libQt5Core.so和libQt5Core.d.so。并且需要根据CONFIG链接单独的库。 最佳答案 我这样做解决了问题。首先

c++ - 尝试将两个相似的 printf 样式调试消息合并到一个函数中

我有两个printf样式的调试日志记录函数(DebuglogfA、DebuglogfB)。两者的操作方式相同,但其中一个日志记录函数将日志记录级别作为参数并忽略低级别调试消息。目前我为每个函数复制了代码,但我希望DebuglogfB能够在调试级别足够高时调用DebuglogfA,而不必在DebuglogfB中创建临时缓冲区。voidDebuglogfA(constchar*lpszText,...){//Initializevariableargumentlistva_listargList;va_start(argList,lpszText);charbuffer[1024];uns