2

我尝试了 3-4 天在 Qt 中设置我的调试器但没有成功。
我在 Windows 7 上有带有编译器 MINGW 和调试器 gdb.exe 的 Qt creator 2.7.0
我正在调试模式下构建,调试器正在跳过断点。提前感谢您的任何提示![qt setup][1]
这是调试器输出的样子:

sSetting breakpoints...
dSetting breakpoints...
dATTEMPT BREAKPOINT SYNCHRONIZATION
dTAKING OWNERSHIP OF BREAKPOINT 1 IN STATE 0
<53-break-insert -f "\"onmainwindow.cpp\":333"
dBREAKPOINTS ARE NOT FULLY SYNCHRONIZED

dATTEMPT SYNC
dATTEMPT BREAKPOINT SYNCHRONIZATION
dBREAKPOINTS ARE NOT FULLY SYNCHRONIZED

>&"No source file named onmainwindow.cpp in loaded symbols.\n"
>53^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="\"onmainwindow.cpp\":333",times="0"}
<54-break-delete 1


>54^done
<55-break-insert -f "\"onmainwindow.cpp\":333"


>&"No source file named onmainwindow.cpp in loaded symbols.\n"
>55^done,bkpt={number="2",type="breakpoint",disp="keep",enabled="y",addr="<PENDING>",pending="\"onmainwindow.cpp\":333",times="0"}
dATTEMPT BREAKPOINT SYNCHRONIZATION
dBREAKPOINTS ARE SYNCHRONIZED
dALL COMMANDS DONE; INVOKING CALLBACK
<56maint print msymbols C:/Users/Lucian/AppData/Local/Temp/gdb_ns_.Ae4844


>&"maint print msymbols C:/Users/Lucian/AppData/Local/Temp/gdb_ns_.Ae4844\n"
>56^done
dFOUND NON-NAMESPACED Qt
dNOTE: INFERIOR SETUP OK
dState changed from InferiorSetupRequested(4) to InferiorSetupOk(6) [master]
dState changed from InferiorSetupOk(6) to EngineRunRequested(7) [master]
dQUEUE: RUN ENGINE

dCALL: RUN ENGINE
<57-exec-run

>57^running
dNOTE: ENGINE RUN AND INFERIOR RUN OK
sRunning.
dState changed from EngineRunRequested(7) to InferiorRunOk(11) [master]
dINFERIOR STARTED
sApplication started


>~"[New thread 7144.0x1fdc]\n"
dFOUND PID 7144
dTaking notice of pid 7144
s[New thread 7144.0x1fdc]
>~"(no debugging symbols found)\n"
>~"(no debugging symbols found)\n"
>~"(no debugging symbols found)\n"

我还安装了新的 gdb 调试器,它也可以;t stop ar 断点,这个新的 gdb 版本输出:

dATTEMPT SYNC
dATTEMPT BREAKPOINT SYNCHRONIZATION
dBREAKPOINTS ARE NOT FULLY SYNCHRONIZED
>&"No symbol table is loaded.  Use the \"file\" command.\n"
>200^done,bkpt={number="1",type="breakpoint",disp="keep",enabled="y",addr="`<PENDING>",pending="\"onmainwindow.cpp\":55",times="0",original-location="\"onmainwindow.cpp\":55"}`

我注意到的一件有趣的事情是:
虽然调试版本具有以下配置:
qmake.exe D:\Elance\X2GoClient\sources_v2.0\x2goclient.pro -r -spec win32-g++ "CONFIG+=debug" "CONFIG+=declarative_debug "
然后它运行第 2 步:make:C:\mingw\bin\mingw32-make.exe
其中提到了 CINFIG+=debug 进行调试
,调试输出窗口向我显示:

20:11:11: Configuration unchanged, skipping qmake step.
20:11:11: Starting: "C:\mingw\bin\mingw32-make.exe" 
C:/mingw/bin/mingw32-make -f Makefile.Release

显示:make -f Makefile.Release..这很奇怪,可以显示使用 Release 中的 makefile 构建吗?谢谢

4

1 回答 1

0

好的,这可能对某人有用:我遇到了上述问题并通过以下更改解决了它:

第1步(我认为这个问题与Qt Creator有关,我认为它是使用configure -release而不是configure -debug-and-release标志构建的)

I altered the x2goClient.pro like:
**BEFORE:**
win32-* {
message(building $$TARGET for windows without ldap and cups)
LIBS += -lwinspool -lws2_32
    CONFIG += static release
}
**AFTER:**
win32-* {

message(building $$TARGET for windows without ldap and cups)

LIBS += -lwinspool -lws2_32

    CONFIG += static debug
 }

第2步(我认为由于Qt可能编译错误,默认的make.exe步骤被解释为make -f Makefile.release,尽管我选择了Debug构建)

In projects->Build Steps->Make arguments 
I placed: -f Makefile.Debug

第 3 步:进行这些更改后,我收到了一些与某些 DLL 相关的错误。有趣的事实是,由 Qt 生成的 Makefile.Debug 没有生成好的,它包含一些 Qt 上不存在的 QtCored.dll 之类的 dll,我已经更改了它,因为我发现 dll 从 QtCored.dll 到 QtCored4 .dll

第 4 步:我的构建器和调试器似乎不对。我下载了最新的 MingW 并更改了构建器和调试器。第一次我只更改了调试器并得到“在启动程序期间退出,代码为 0xc0000005”错误。当我更改了最新的 MingW 的构建器和调试器时,它终于起作用了。我现在使用 Qt 已经 2 周了,但到目前为止,我在 IDE 上没有遇到什么问题。Qt 很好,但是配置起来有点硬核。

于 2013-08-27T12:59:34.020 回答