草庐IT

as调试SystemUI

全部标签

c++ - 我可以使用使用调试符号重新编译的相同二进制文件来调试由没有调试符号的 C++ 二进制文件生成的内核吗

我正在尝试调试由没有调试符号的C++二进制文件生成的核心文件。为了进行有效的调试,我需要调试符号,所以我使用-g选项重新编译了相同的代码,以便在重新编译的二进制文件中生成调试符号。我现在可以使用第二个二进制文件(有调试符号,其他一切都一样)调试由第一个二进制文件(没有调试符号)生成的同一个核心文件吗?非常感谢! 最佳答案 如果您使用例如编译原始可执行文件g++-O2...,您不能(正如您可能已经发现的那样)使用通过g++-g...构建的新可执行文件来调试核心--GDB需要符号匹配,但它们不会(由于优化级别不同)。您可以做的是使用与原

c++ - 防止混合调试和发布库

作为库开发人员,我想防止我的库用户(Windows、MSVC)链接到错误的配置(而不是将调试库链接到他们的发布程序,反之亦然)。是否可以在编译期间警告用户他(她)应该链接到库的正确配置?编辑调试和发布版本都应该可用,以允许Windows开发人员调试他们的应用程序。因此,我的库的调试版本和发布版本都应该可用。我问这个问题是因为对Windows初学者开发人员的很多支持是由于他们混合调试和发布代码,以及遇到难以调试的运行时错误。 最佳答案 问得好,我一直认为使用我的库的开发人员会链接到正确的版本。现在我想起来了,为什么你甚至想向公众发布你

附有调试器的 C++/opengl 应用程序运行更流畅

您是否遇到过C++opengl应用程序从visualstudio执行时运行得更快更流畅的情况?在没有调试器的情况下正常执行时,我得到较低的帧率,50而不是80,并且出现奇怪的滞后,其中fps每20-30帧下降到大约25帧/秒。有办法解决这个问题吗?编辑:我们还使用了很多显示列表(使用glNewList创建)。并且增加显示列表的数量似乎会增加滞后。编辑:问题似乎是由页面错误引起的。使用SetProcessWorkingSetSizeEx()调整进程工作集没有帮助。编辑:对于一些大型模型,问题很容易通过procexp-utility的GPU内存使用情况来发现。当每帧有很多glCallLis

c++ - 如何使 dumpObjectInfo 打印调试信息?

我想使用dumpObjectInfo函数打印对象信息的转储,但没有打印任何内容。下面是一个使用Qt的C++程序:$catmain1.cpp#include#include#include#include"a.h"intmain(){Aa;Bb;QObject::connect(&b,SIGNAL(sendText(QString)),&a,SLOT(printText(QString)));b.sendSignal();qDebug()有如下.pro文件(在CONFIG中设置Debug模式):$catqt.pro#####################################

c++ - C++中的VS2010调试器, "unused=???"或 "unused=0"的含义

在VisualStudio2010(C++,非托管)中调试,信息unused???或unused0应该是什么意思?我附上了两个屏幕截图,child是现有窗口的HWND。我也对HWND有时显示为“未使用”,有时显示为“0”这一事实感到困惑。当有一个指向未分配内存的指针时,我会理解这种情况,但在我的特定情况下,窗口已经创建并且有效。 最佳答案 这可以追溯到九十年代初期,当时只有HANDLE作为一种类型来声明任何Windows对象的句柄。这是一个错误工厂,程序员可能会胡乱编写代码,例如,在需要窗口句柄的地方传递字体句柄。所以后来添加了ST

c++ - Visual C++ 2010 拒绝在调试时显示 std::string 值。显示 <Bad Ptr>

我有一种奇怪的感觉,好像这是最近才出现的问题,并且发生在两台不同的计算机上。当我调试并尝试查看来自STL的std::string的值时,它显示为值。它说它的大小是15,容量是一些乱码。数组值本身都显示CXX0030:错误:无法计算表达式。这非常令人沮丧,如果我在字符串上调用c_str并将其分配给char*或在需要时使用监视表达式,我仍然可以在调试时访问字符串值,但它非常乏味并且让生活变得非常艰难连续3天调试复杂问题。其他STL容器的内容显示得很好。这发生在两台不同计算机上的多个项目上,我很确定我已经为该项目设置了所有调试选项。没有优化,肯定会生成调试信息。

c++ - 如何正确调试并查找崩溃原因?

我不知道该怎么办了……没希望了。我厌倦了猜测是什么导致了崩溃。最近我注意到一些opengl调用在一些gfx卡上随机崩溃程序。所以我现在真的很偏执什么会导致崩溃。这个崩溃的坏处是它只有在长时间使用该程序后才会崩溃,所以我只能猜测是什么问题。我不记得我对程序进行了哪些更改可能会导致崩溃,已经很久了。但幸运的是,以前的版本没有崩溃,所以我可以复制粘贴一些代码并浪费10个小时来查看它从什么时候开始崩溃......我想我还不想那样做。程序在我让它连续处理相同的文件大约5次后崩溃,每次它在进程中使用大约200兆字节的内存。它在读取过程中和之后随机崩溃。我创建了一个“安全”的free()函数,它检查

c++ - Visual Studio 2010 调试 "if (var == NULL)"未触发

已解决-构造函数问题MatthewFlaschen和MichaelBurr指出Node(int)的重载构造函数调用Node()不起作用的问题because...谢谢大家!我已经构建了一个程序(我正在调试它)并且遇到了一个奇怪的问题......一个`if`语句没有在它应该被触发的时候被触发......这是一个学校项目,我们必须构建一个具有至少一个“优化”功能的AVL树。我确信并测试过`rdown`和`ldown`起作用(作为平衡因素)——树不是完全平衡的。相反,它基于分支的高度(即-`balance()`应该只返回(1,0,-1)否则它是不平衡的。我希望这些信息足以解决这个奇怪的问题..

c++ - 前向声明的类型和 "non-class type as already been declared as a class type"

我对以下代码有疑问:templatevoidfoo(structbar&b);structbar{};intmain(){}它在GCC上编译成功,但在MSVC(2008)上编译失败并出现以下错误:C2990:“bar”:已声明为类类型的非类类型是代码错误还是MSVC中的错误?如果我在模板定义之前添加structbar;就可以了。 最佳答案 我们有我们的赢家:https://connect.microsoft.com/VisualStudio/feedback/details/668430/forward-declared-type-

c++ - 不用调试工具的调试技巧

我发现自己处于几乎没有任何调试工具的情况下不得不调试Qt应用程序的困难境地:应用程序似乎开始使用越来越多的CPU,因为它一次又一次地运行相同的操作;许多小时后CPU完全饱和。该应用程序在ARMLinux嵌入式设备上运行,其中gdb似乎无法工作,可能很难通过提供的工具链发现问题。strace似乎只报告计时器事件(这是一个OpenGL应用程序,所以这是预期的)。ltrace不可用,编译它导致了一项艰巨的任务,也许毫无用处。我没有编写应用程序,但源代码可用。我还能做些什么来发现应用程序在消耗那么多资源时忙于做什么吗?我必须以任何方式跟踪应用程序执行的所有方法调用吗?我可以使用任何其他技术来尝