2011-09-01 302 views
0

我與我的C收到此錯誤++代碼: http://imageshack.us/photo/my-images/193/vcerror.png/調試斷言失敗

唯一的問題是它並不指向我是哪裏的問題......我明白了串標超出範圍,但我不知道它可能在哪裏。

我想知道是否有反正我能找到它在哪裏?我有一個粗略的想法,所以我已經在那裏放置了一個斷點,但VC++如何斷點是非常糟糕的。我一步一步來,但它只顯示我自己的代碼,而不是我自己的代碼。

所以,我走了一步,錯誤直接顯示。

我該如何追蹤這個問題?

+0

VC++有體面的斷點支持。你只需要熟練調試。 ;) – selbie

+0

如果它沒有顯示你的代碼,你有一些配置錯誤。 VC調試絕對不是'可怕'的。搜索 - 所以可能有幾個問題,關於爲什麼你的代碼沒有在調試器中顯示。 –

+0

@Mitch小麥1500實驗! 0聲望!愛迪生從不給他意志的力量! –

回答

1

基本上,您需要查看callstack並設置所有符號。

我打算大肆猜測,並建議您可能不知道如何使用「調用堆棧」窗口。

在程序的調試會話中,沒有設置斷點,允許程序運行,直到它觸發斷言對話框。按「重試」以允許控制傳遞給調試器。可能會彈出另一個對話框,提示您「中斷」或「繼續」。選擇休息。此時應該將其分解爲調試器。

然後確保您可以看到調用堆棧並且至少有一個監視窗口。

Debug->Windows->Call Stack. 
Debug->Windows->Watch->Watch 1 

您可以在任何項目中調用堆棧窗口中雙擊跳轉到那裏執行,預計返回的準確代碼行。 (有時編輯器窗口上的小箭頭指向在上次調用返回後運行的下一行代碼)。雙擊頂部調用堆棧行正下方的調用堆棧窗口中的函數行。這可能是std :: basic_string ::運算符。傳遞給這個函數的價值是什麼?如果懸停在變量名稱上不起作用,請將其添加到「監視」窗口中。另外,爲「this」添加一個手錶,以便分析字符串的實際大小和容量。

雙擊當前位置下方的調用堆棧中的函數調用。這應該帶你到你的程序中實際的錯誤代碼行。爲字符串變量添加另一個手錶,並應該能夠找出問題所在。

其餘的由你決定。

我假設這是一個獨立的EXE項目,其中一切都由IDE構建。如果不是,則確保生成的每個二進制文件的PDB文件與相應的二進制文件位於同一目錄中。再次,如果這是Visual Studio中的一個簡單的EXE項目,那麼這是自動的。可以肯定的是,確保先「清理」你的構建,然後再做一次完整的重建。這有時會修復調試扭曲。

+0

做完你剛纔所說的話後,我發現錯誤在哪裏,能夠弄清楚我做錯了什麼。感謝隊友,我真的很感激! – Brandon