【问题标题】:Debugging a custom widget调试自定义小部件
【发布时间】:2016-07-26 02:47:33
【问题描述】:

我是一名嵌入式 C 程序员(不是 C++ 程序员),我试图自学如何为生产创建更好的简单 GUI。我已经用谷歌搜索了这个并且找不到答案,但可能只是我的搜索措辞不正确。

我创建了一个自定义小部件,当我在调试我的应用程序时从 Qt 创建器访问它时,调试器确实会进入小部件的源代码。

但是,一旦在小部件的源代码中,它就会疯狂地跳来跳去,从第一行代码开始,然后在我按 F10 时向上跳到局部变量行中,最终在我按下时再次向下跳到代码中继续打F10。有时某些变量显示<Optimised out>,而不是它们实际持有的值。

我已尝试为小部件进行调试安装,但这根本没有区别。

真的可以像这样调试小部件吗?我一直在这个圈子里转了几个小时,需要想出一种更好的方法来了解程序在自定义小部件的某个部分崩溃的原因。

【问题讨论】:

  • 是的,可以调试自定义小部件。它与任何其他代码没有什么不同。您能否提供一个您所看到的行为的示例?
  • 听起来您正在尝试调试发布可执行文件。你确定你有正确的配置集吗?
  • @NicolasHolthaus,不,我完全不确定。我的应用程序肯定处于调试模式。我按照上面最初描述的方式重新编译的小部件,但似乎由于某种原因被“make debug install”编辑掉了,但这并没有帮助。如果您能准确描述如何实现这一目标,我将不胜感激。
  • @J.Dunlop,我真的不知道如何描述它。当我在应用程序中设置断点并进入小部件的代码时,按 F11,然后当我按 F10 或 F11 单步执行时,有时显示您所在行的箭头会向后移动,有时会向前移动。通常,调试器中的值显示 而不是它们的实际值。这一切似乎都是随机的!也许这不是你真正要问的问题,如果是这样,请道歉。

标签: c++ qt widget


【解决方案1】:

解决了。今天早上当我回到它时,我有一个清晰的时刻。我完全忘记了必须在 .pro 文件中引用库。因此,即使我已将调试库复制到:

/usr/lib64/qt5/plugins/designer/libcutescreenwidgetplugin.so

问题是项目文件有:

LIBS += pathtosoucecode/build-CuteScreenWidgetPlugin-Desktop_9516b5-Release/libcutescreenwidgetplugin.so

一旦我更改了对调试库的引用,所有调试信息和单步都可以完美运行。

现在我突然想到,也许我真的应该这样做:

LIBS += /usr/lib64/qt5/plugins/designer/libcutescreenwidgetplugin.so

在我的项目文件中,一旦安装了调试版本,它将自动使用它。当您使用像 Qt 这样复杂的系统要学习无数东西时,这可能只是您犯错的事情之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 2015-07-27
    • 2012-08-06
    • 2011-11-05
    • 2020-10-15
    • 2016-05-17
    • 2019-03-28
    相关资源
    最近更新 更多