簡體   English   中英

VS C++中如何找到異常發生的位置

[英]How to find the location where exception occurred in VS C++

我收到此異常:

Microsoft C++ exception: std:out_of_range at memory location 0xBlahBlahBlah

如何在我的代碼中找到這個位置?

一種方法是為異常設置中的所有內容啟用“拋出時中斷”。 它將有一個異常類型列表,可以通過復選框打開。 我通常會把它們全部打開然后走。 在此過程中,您可能會遇到一些已處理的異常,但您不應錯過問題之一。

您可以在以下Debug->Windows->Exception Settings找到它: Debug->Windows->Exception Settings

完成后,我建議將其恢復為默認設置(它有一個圖形按鈕),這樣每次拋出處理的異常時都不會中斷。

以下是問題解決步驟:

  1. 在反匯編窗口中查找“異常:EEEE at memory location 0xXXXXX”位置中顯示的內存位置。
  2. 在該位置設置斷點並運行程序直到它中斷。
  3. 檢查調用堆棧以查找實際拋出異常的函數。

出於某種原因,即使在拋出 std::exception 時調試器異常設置被設置為中斷,在拋出 std::out_of_range 異常時調試器也沒有中斷。

我的方法是在某處設置一個斷點,然后按住 F10 直到它拋出異常。 現在你知道錯誤在哪里了。

此錯誤是運行時邏輯錯誤,在許多情況下都可能發生,要找到它,您應該跟蹤代碼並查找一些邏輯錯誤。 例如

int x[4];
x[5] = 1;

在這種情況下,您使用的是不允許的內存單元。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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