QtCreator 2.7不加载调试符号,它会跳过断点

时间:2013-08-16 17:04:09

标签: qt debugging gdb mingw qt-creator

我正在尝试3-4天在Qt中设置调试器但没有成功。
我在Windows 7上有Qt creator 2.7.0和编译器MINGW以及调试器gdb.exe 我正在构建调试模式,调试器正在跳过断点。 提前感谢您的任何提示 ![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 breakpoints,这个新的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..t这很奇怪 是否可以使用Release中的makefile进行构建? 感谢

1 个答案:

答案 0 :(得分: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并更改了BOTH构建器和调试器。我第一次只更改了调试器并得到“在启动程序退出时使用代码0xc0000005”错误。当我改变了最新MingW的BOTH构建器和调试器时,它终于奏效了。 我现在和Qt一起工作了两个星期,但到目前为止,我在IDE中没有遇到太多问题。 Qt很好,但配置起来有点硬核。