因此,這裏是我遇到的問題。在調試會話期間獲取有關匿名異常的數據
void * something = ???;
void (*fun)(void*) = ???;
try
{
fun(something);
}
catch (...)
{
assert(false);
}
我的任務是確定爲什麼斷言會被解僱。不幸的是,我不能改變上面的代碼。此外,這是在多線程環境中,並且在程序關閉期間。執行try/catch的部分在現實世界的代碼中被非常有目的地解鎖。當我試圖通過這個程序時,它突然消失在我身上......我甚至無法步入正確的fun()調用,更不用說進入它了。
我唯一的追求似乎是在catch(...)中放置一個斷點並檢查其中的任何內容。不幸的是,這不會告訴我什麼,因爲我不知道什麼是真正的樂趣,也不知道是什麼。
我現在唯一的希望就是我可以通過Visual Studio調試器告訴我什麼是...
,如果我能夠找出它被拋出的位置,我會很高興。至少它不在自動列表中......可能是在其他地方?有什麼方法可以讓我在這裏取得進展,或者我是否搞砸了?我覺得擰......
====
更新:有一個外部程序殺死我的時候沒有及時關閉。這就是踩踏讓它消失的原因。與線程無關。
一旦我意識到我能夠按照建議打開異常。不幸的是,沒有地方拋出一個......這是一個訪問違規。被存儲的函數以某種方式被搗毀。
你正在跨越優化的二進制文件嗎?如果是這樣,理解看看這部分代碼的反彙編可能會更簡單... –
@MatteoItalia - 不,它都是調試構建的。 –