簡體   English   中英

wxWidgets在關閉應用程序時崩潰

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM