轉:vc6.0調試技巧[轉載,學習]

原網址如下:

http://blog.csdn.net/bobob/archive/2005/12/23/559877.aspx

作者bobob

主要是爲了學習,並且希望更多的人能看到

瞭解調試,首先要知道"斷點"這個概念.斷點就是程序運行中可能會中斷的地方,方便開發者在程序運行的過程中查看程序當前的運行狀態,比如變量的值,函數的返回值等等.究竟怎麼使用斷點呢?
1.F9在當前光標所在的行下斷點,如果當前行已經有斷點,則取消斷點.
  F5調試狀態運行程序,程序執行到有斷點的地方會停下來.
  F10單步執行程序.
  CTRL+F10運行到光標所在行.
  F11和F10的區別是,如果當前執行語句是函數調用,則會進入函數裏面.
  SHIFT+F11跳出當前所在函數.

特別說明:
  a.有的地方不能下斷點.比如空行,基本類型定義語句(不初始化),等等非執行語句.比如
int i;  // 此行不能下斷點
int j=0;// 這裏可以下
CStringstr;// 這裏可以下
intk = Max(i,j);// 這裏可以下
  b.不是所有斷點都會(斷).比如下斷點的語句在程序裏面沒有被執行.
  c.此外,ALT+F9還可以下條件斷點,不過這個不常用,有興趣的可以自己研究:)

2.如何調試Release版的程序?
  有些程序在debug下運行的很好,但在release下卻總是失敗,默認情況下release是不能調試的. 怎麼解決呢?
  其實"debug"和"release"都只是一個代號而已,各自對應一組不同的編譯選項.
  在release的默認設置下,ALT+F7 ,調出工程設置對話框,切換到link選項卡,勾選"Generate debug info",然後再切換到C/C++選項卡,在"Optimizations"裏面選"Disable(Debug)",在下面的"Debug info"裏面選"Program Database for Edit and Continue".然後點OK保存設置,重新編譯程序,下斷點即可.
3.上面兩點已經能應付很多種情況了,但是有時候即使在debug下也不能下斷點,我以前也曾經遇到過這種問題,一個調了4層的dll,就是不能下斷點.其實還除了上面的方法,還有一種最底層的實現技術:使用匯編.
  細心的人可能會發現,有時候在調試狀態下當程序出現異常的時候,光標會指向彙編代碼,而這個代碼就是int 3,這其實是一箇中斷.
  在你的代碼的任意地方加上
  __asm{
  int 3
};
  用debug編譯,然後直接運行程序.當程序執行到上述代碼的時候,就會出現一個框,告訴你說一大堆信息,說程序錯了,下面有"調試"、"終止"、"忽略",不用理,點調試就可以進入跟 蹤了。這種方法我還沒有失 手過:)

<完>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章