我在bcb故意寫一個崩潰的代碼
void __fastcall TForm1::btn1Click(TObject *Sender)
{
char *p1 = new char[20];
delete []p1;
strcpy(p1, "aaaaaaaaaaaaaaafsssssssssssewweeeeeeeeeeeeeeeeeeeeeeee");
p1 = new char[20];//這句崩潰
}
最后一句是會崩潰的,但是我除錯視窗為什么定位不到這句,打開call stack視窗,根本沒定位到btn1click這個函式。若是單步除錯到崩潰這行代碼是call stack是有 btn1click這個函式名,之后匯編進入new []函式除錯之后某個時候 call stack視窗就剩下面的呼叫資訊了。

我是想問有沒有辦法讓call stack顯示btn1Click這個函式,這樣程式運行之后崩潰 然后進入除錯狀態就能知道是這個函式出錯了。
uj5u.com熱心網友回復:
打開codeguard,這種錯誤會提示的uj5u.com熱心網友回復:
這是因為發生例外后,程式已經進入windows例外處理程序,因此call stack在rtl60.bpl這里,你把斷點打在前面,stack就在btnclick里uj5u.com熱心網友回復:
這個我在問題里也提到了,單步除錯是可以。但是直接運行它就不能定位到那里。你可以試試
uj5u.com熱心網友回復:
strcpy(p1, "aaaaaaaaaaaaaaafsssssssssssewweeeeeeeeeeeeeeeeeeeeeeee");是這句話導致奔潰,不是后面那句。你為什么要這個前面delete?
這么做不崩潰才怪
uj5u.com熱心網友回復:
如果你不相信,你可以先把會奔潰的那句話注釋掉看看會不會再奔潰轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/105685.html
上一篇:distcc 編譯問題
