【问题标题】:Unable to run Qt debugger on Mac OSX无法在 Mac OSX 上运行 Qt 调试器
【发布时间】:2014-09-30 07:39:21
【问题描述】:

尝试在 mac (10.6.8) 上调试用 Qt 编写的应用程序。 Qt 4.8.6,QtCreator 3.2.0,我在/usr/bin/gdb设置了调试器System GDB,编译器gcc-4.2

我要调试代码...

我进入应用程序输出窗口

Debugging starts
Debugging has failed
Debugging has finished

(并且没有命中断点,代码中没有任何开始)

我打开调试日志窗口,我看到的唯一可疑的东西是

....
    111^error,msg="Undefined command: \"python\". Try \"help\*.*
    NOTE: ENGINE SETUP FAILED
    State Changed From EngineSetupRequested(1) to EngineSetupFailed(2)
    HANDLE RUNCONTROL FINISHED
    .....

在左边,一些命令有

109-interpreter-exec console "python sys.path.insert(1, "/Volumes/QtCreator/..."
110-interpreter-exec console "python sys.path.append("/usr/bin/data-directory/ python)"
111-interpreter-exec console "python from gdbbridge import *"

我检查了python是否已安装...我可以从任何地方键入python并获取它的命令提示符,因此它位于系统路径上...

我读到了一些关于必须签署 fsf 调试器的文章,但我使用的不是 fsf 调试器?

如何在 macx 中调试我的应用程序?

编辑:从命令行尝试 gdb,应用程序作为参数

GNU gdb 6.3.50-20050815 (Apple version gdb-1518) (Sat Feb 12 02:52:12 UTC 2011)
...
This GDB was configured as "x86_64-apple-darwin"...
warning: Unable to read symbols for QtSvg.framework/Versions/4/QtSvg (file not found).
warning: Unable to read symbols from "QtSvg" (not yet mapped into memory).
warning: Unable to read symbols for QtGui.framework/Versions/4/QtGui (file not found).
warning: Unable to read symbols from "QtGui" (not yet mapped into memory).
warning: Unable to read symbols for QtCore.framework/Versions/4/QtCore (file not found).
warning: Unable to read symbols from "QtCore" (not yet mapped into memory).
warning: Unable to read symbols for QtNetwork.framework/Versions/4/QtNetwork (file not found).
warning: Unable to read symbols from "QtNetwork" (not yet mapped into memory).
Reading symbols for shared libraries .
... some warnings that .o is more recent than .dylib in dependent libs... but that I don't have to step into so I don't care...
...
warning: Could not find object file "/usr/llvm-gcc-4.2/bin/../lib/gcc/i686-apple-darwin11/4.2.1/x86_64/crt3.o" - no debug information available for "darwin-crt3.c".
.... done

所以我输入运行

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x0000000000000000
0x00007fff83872c00 in strlen ()

我不知道它在哪里(我知道但真的看不到它)或者它是否是一个实际的字符串指针或其他东西......

我不知道断点在哪里,整个源代码很长并且包含很多很多文件,所以我真的不知道如何从命令行使用 gdb 来做到这一点...

但似乎它确实开始了,没有抱怨python?

开始时的警告 - 这是否意味着仍有希望,如果 gdb 了解其库,则可以以某种方式配置 gdb 以与 Qt 一起运行?

顺便说一句……正在寻找丢失的库…… QT 4.8.4 debug libraries not found on Mac OSX

我尝试使用 lldb 和 qmake 替换我的调试器(在 Qt 中) - 在这两种情况下,我都收到错误“无法创建‘无引擎’类型的调试器引擎”

编辑:我读到的另一个建议是重新编译 Qt Creator Binaries 以添加调试符号...我希望这不是我必须做的,因为

"注意:在 Qt Creator 3.2 中,我们放弃了对 OS X 10.6 (Snow Leopard) 的支持。技术原因是 Apple 在该 OS 版本上不支持任何类型的 C++11。当然这不影响您可以在哪些平台上运行 Qt 应用程序。但无法在 10.6 上运行 Qt Creator 3.2 二进制文件,也无法使用 Apple 提供的工具链在 10.6 上编译 Qt Creator 3.2。 (来自发行说明)

更新:我能够通过放置无数个 qDebug() 语句来找到上述错误的原因(KERN_INVALID_ADDRESS)......虽然这不是我想要完成的,但许多错误。

我仍然有很多错误...附加调试器会很棒。我已经列出了程序所需的库——它们似乎存在。不确定它们是“调试”还是“发布”库。 ....但我并没有尝试单步调试 Qt 源代码,那么如果我有它们的调试符号又有什么关系呢?如果它们是“发布”类型的库,那么我的整个程序,在“调试”中构建,将不会执行甚至无法构建?由于我在“调试”模式下构建代码并执行,所以库必须是正确的,对吧?

好混乱……

【问题讨论】:

  • 尝试在命令行上运行 gdb 并调用“gdb /path/to/application.app”,看看是否有同样的问题。 gdb 启动后,输入“run”开始调试。
  • @Merlin069,我试过了 - 请看编辑...也许还有希望?
  • 如果您在应用程序包中的二进制文件上运行 otool -L,它会告诉您它在哪里寻找这些库。看看这个答案:stackoverflow.com/questions/18780602/…

标签: macos qt debugging


【解决方案1】:

QtCreator 3.2(以及之前的几个版本)需要启用 Python 脚本的 GDB(或 LLDB,或 Windows 上的 CDB)。在 Mac 上,Apple 的 GDB 没有 Python 脚本,因此不能与 Qt Creator 一起使用。 FSF GDB 适用于 Mac 上的某些项目,但总的来说 LLDB 更适合那里。

您的“GNU gdb 6.3.50-20050815(Apple 版本 gdb-1518)”就是这样一个不支持 Python 的 Apple 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    相关资源
    最近更新 更多