![](/img/trans.png)
[英]Closing the application by selecting 'Quit' menu item - wxWidgets 3.0
[英]wxWidgets Crash on closing application
這可能是一個愚蠢的問題,因為此崩潰可能與某些無效的指針或已損壞的對象有關,但是以各種方式查看代碼,我無法找出問題出在哪里。
當我關閉軟件時,收到SIGSEVerror並顯示以下消息:
#0 00000000 0x003f01c5 in ??() (??:??)
#1 004D36BC wxSocketClient::~wxSocketClient(this=0x2a8bf80, __in_chrg=<value optimized out>) (../../src/common/socket.cpp:1237)
#2 0042E9EE aaa::~aaa(this=0x2a5998c, __in_chrg=<value optimized out>) (C:\Documents and Settings\\My Documents\programming\assistant\Assistant\src\pasan.cpp:71)
#3 00416A49 AssistantFrame::~AssistantFrame(this=0x2a592c8, __in_chrg=<value optimized out>) (C:\Documents and Settings\\My Documents\programming\assistant\Assistant\AssistantMain.cpp:937)
#4 00416FCB AssistantFrame::~AssistantFrame(this=0x2a592c8, __in_chrg=<value optimized out>) (C:\Documents and Settings\\My Documents\programming\assistant\Assistant\AssistantMain.cpp:1007)
#5 00438F21 wxAppBase::DeletePendingObjects(this=0x2a59a58) (../../src/common/appcmn.cpp:423)
#6 00439067 wxAppBase::ProcessIdle(this=0x2a59a58) (../../src/common/appcmn.cpp:454)
#7 004DD68B wxEventLoopManual::Run(this=0x2ac4fb0) (../../src/common/evtloopcmn.cpp:99)
#8 00438C62 wxAppBase::MainLoop(this=0x2a59a58) (../../src/common/appcmn.cpp:312)
#9 00438D95 wxAppBase::OnRun(this=0x2a59a58) (../../src/common/appcmn.cpp:367)
#10 004E8372 wxEntryReal(argc=@0x22fe5c, argv=0x3f2880) (../../src/common/init.cpp:448)
#11 004330C0 wxEntry(argc=@0x22fe5c, argv=0x3f2880) (../../src/msw/main.cpp:231)
#12 004332AF wxEntry(hInstance=0x400000, nCmdShow=10) (../../src/msw/main.cpp:386)
#13 00401441 WinMain(hInstance=0x400000, hPrevInstance=0x0, lpCmdLine=0x251f49 "", nCmdShow=10) (C:\Documents and Settings\\My Documents\programming\assistant\Assistant\AssistantApp.cpp:17)
#14 00000000 0x005f9566 in main() (??:??)
問題是我的代碼已經大約有5k行,並使用了許多控件。 我不是調試專家嗎,從中獲得一些幫助信息嗎?
謝謝你的幫助
一般來說:
進行調試構建
運行應用程序
您可能會彈出帶有有關躲避性代碼的其他信息的額外窗口。 如果是這樣,請找出調試版本注意到的問題並進行修復
這樣可以解決問題嗎?
如果不是,請在調試器下運行該應用程序。 發生崩潰時,請查看調用堆棧。 從底部開始逐步進行操作,直到輸入識別出的代碼。 這將告訴您崩潰發生時正在執行什么代碼。 它可能在您的某個類的析構函數中,這將為您提供需要解決的重要線索。
在這種情況下:
崩潰似乎發生在wxSocketClient的析構函數中,該析構函數是從../../src/common/socket.cpp:1237調用的嗎? 您是否在這里雙重刪除wxSocketClient實例?
我認為在不研究源代碼的情況下很難在這里給出答案。 您可以通過暫時禁用/注釋/不實例化某些類/窗口來降低代碼的復雜性嗎? 從僅調用一個簡單的wxFrame的wxApp開始,並檢查它是否正常工作,然后如何逐步重新啟用您的類呢?
你做
找到調試起點的解決方案是實際查看該轉儲。 第三行指出
#2 0042E9EE aaa::~aaa(this=0x2a5998c, __in_chrg=<value optimized out>) \
(C:\Documents and Settings\My Documents\programming\assistant\Assistant\src\pasan.cpp:71)
現在,從調試開始,請查看“ My Documents\\programming\\assistant\\Assistant\\src\\pasan.cpp
,第71行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.