當前位置:首頁 » 編程軟體 » 怎麼看調試過程的程序編譯

怎麼看調試過程的程序編譯

發布時間: 2024-09-09 11:12:28

c語言中什麼叫做單步調試,步驟是什麼

單步調試是指程序開發中,為了找到程序的bug,通常採用的一種調試手段,一步一步跟蹤程序執行的流程,根據變數的值,找到錯誤的原因。

解決這個問題的方法如下:

1、首先需要設置斷點的那一行代碼的最前面點擊下,就會出現一個紅色的圓球,代表設置斷點成功,下圖一共設置了4個斷點。

⑵ 這個程序在DEV C++上可以運行並出現正確結果 但是提交到PTA就會報錯!請賜教!

當 C 語言程序能夠正常編譯並運行,但可能結果可疑或不對時,即,當程序沒有語法錯誤而可能有邏輯錯誤時,就需要考慮使用調試Debug功能來找出程序的 bug。



在調試過程中,可以讓程序運行到設置好的斷點處並暫停下來,然後通過觀察相關的變數值是否正確,來判斷程序的邏輯錯誤可能出現在哪裡。



本文以 Dev-C++ 5.11 開發環境為例來說明 C 語言的調試方法。



  • 准備工作

  • 菜單:工具/編譯選項

    Tools/Compiler Options

    在「設定編譯器配置」Compiler set to configure中選擇「TDM-GCC 4.9.2 64-bit Debug」。

    提示:

    如果是 32 位的系統,請選擇「TDM-GCC 4.9.2 32-bit Debug」。

    在下方的「編譯器」General選項卡中,勾選「編譯時加入以下命令:」Add the following commands when calling the compiler:,並在其中輸入「-g」。如上圖所示。

    確定退出後,可在軟體界面右上角看到或選擇用於調試的編譯器。

  • 設置斷點

  • 斷點breakpoint,指的是在調試過程中程序運行到此行代碼前會臨時停下,以便觀察此時的某些變數值。

    可通過點擊代碼左側的行號來設置斷點。

    或在某行代碼上右擊,選擇「切換斷點」Toggle Breakpoint。

    或者使用快捷鍵:F4。

    同樣的方法也可用於取消斷點設置。

    斷點設置建議:

    設置在 scanf 等輸入語句的下一行,以觀察數據是否被正確獲得。

    設置在循環語句的下一行,以觀察循環控制變數在循環結束後的值,或者為了避免調試過程中在循環語句段反復點擊「下一步」按鈕。

    設置在函數調用語句的下一行,以觀察函數返回的結果值是否正確。

  • 開始調試

  • 在開始調試前,一般要先編譯。

    菜單:運行/編譯

    Execute/Compile

    快捷鍵:F9

    確保沒有語法錯誤之後,再開始調試。

    菜單:運行/調試。

    Execute/Debug

    快捷鍵:F5

    或者,點擊工具欄上的「」按鈕。

  • 添加查看

  • 開始調試後,代碼將按照常規順序依次運行。執行到第一個斷點時,才臨時停止,紅色行變成藍色行,代表即將要執行的代碼行。

    此時,可將滑鼠指針懸浮於某個變數之上,以查看此時該變數的值。

    提示:

    對於字元變數,會同時顯示字元的 ASCII 碼值。

    或者,在變數上右擊,選擇「添加查看」Add watch,會自動將此變數添加到左側的調試Debug面板中,以便後續跟蹤查看。

    提示:

    在變數名上雙擊,可精準選中變數。

    或者,點擊左下方的「添加查看」Add watch按鈕,手動添加要查看的變數。

  • 繼續或停止調試

  • 可以使用相關按鈕繼續調試工作。

    下一步Next line按鈕

    運行下一行代碼。如果下一行代碼是對函數的調用,不進入函數體。

    快捷鍵:F7

    類似於 Turbo C++ 中的「Step Over」。

    跳過Continue按鈕

    直接運行到下一個斷點處。

    單步進入Into function按鈕

    運行下一行代碼,如果下一行是對函數的調用,則進入函數體內逐行運行。

    快捷鍵:F8

    類似於 Turbo C++ 中的「Trace」。

    跳過函數Skip function按鈕

    當在函數內部時點擊此按鈕,將直接運行到函數結束,並返回到函數調用處。

    停止執行Stop Execution按鈕

    停止調試,清除所有添加好的查看watch。

    快捷鍵:F6

    說明:

    下一條語句Next instruction按鈕和進入語句Into instruction按鈕,常結合CPU窗口查看並執行指令。一般的調試工作中可以不用。

⑶ 編譯和調試的區別

編譯和調試都是寫程序的重要環節。它們兩者有什麼區別呢?下面,我跟大家分享一下編譯和調試的區別。

1.編譯和調試的區別

編譯是編譯器在你程序沒有運行的時候幫你檢查錯誤。

調試是你用調試器在程序運行以後,根據運行狀況來檢查錯誤。

這兩者的不可逆的,首先得編譯通過,你才能調試啊,編譯正確後,會生成exe文件,IDE中啟動程序,可以進行調試。

編譯是把源代碼變成二進制obj的過程(鏈接後成為可執行文件),當然會先幫你檢查有無簡單的語法問題,要不編譯器人家不認識,你自己說的有無邏輯就和編譯器無關了。

調試首先需要生成二進制代碼,所以需要首先進行編譯和鏈接,然後到斷點後,調試器會幫你加int 3中斷,就停住了。

編譯關注語法錯誤,調試關注邏輯錯誤。也就是說編譯關注的是syntax(語法)方面的問題,調式關注的是semantics(語義)方面的問題。

2.編譯詞法分析

詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。

源程序中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。

詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。

3.編譯語法分析

編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。編譯程序的語法規則可用上下文無關文法來刻畫。

語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧里,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。

4.代碼優化

代碼優化是指對程序進行多種等價變換,使得從變換後的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為優化。

有兩類優化:一類是對語法分析後的中間代碼進行優化,它不依賴於具體的計算機;另一類是在生成目標代碼時進行的,它在很大程度上依賴於具體的計算機。對於前一類優化,根據它所涉及的程序范圍可分為局部優化、循環優化和全局優化三個不同的級別。

4.編譯出錯處理

如果編譯過程中發現源程序有錯誤,編譯程序應報告錯誤的性質和錯誤的發生的地點,並且將錯誤所造成的影響限制在盡可能小的范圍內,使得源程序的其餘部分能繼續被編譯下去,有些編譯程序還能自動糾正錯誤,這些工作由錯誤處理程序完成。

需要注意的是,一般上編譯器只做語法檢查和最簡單的語義檢查,而不檢查程序的邏輯。邏輯錯誤要通過調試。

我總結:

看完了上面的比較,你現在還能區別編譯與調試嗎?其實,只要記住這句話:“編譯關注語法錯誤,調試關注邏輯錯誤,先有編譯,後有調試”,就不會忘了兩者的區別了。

⑷ 如何查看C程序編譯後生成的匯編語言啊

VC++編譯器,在按F10後,調試工具欄的最後一個,點選它後,會出現一個窗口,裡面的就是程序的匯編語言。

⑸ C語言 怎麼調試程序

一、在keil中調試c語言程序

1、打開我們的程序,點擊菜單欄右側的start/stopdebug..按鈕,進入調試模式,如下圖。

⑹ c++編譯器怎樣查看運行過程

你先寫好你的程序,在工具欄的空白處右鍵,選擇調試,就會出現一個調試工具,那上面的就是可以查看一步一步運行的過程路徑,f11是快捷鍵。你慢慢研究,很好用的。給你張圖!

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:180
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:739
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:247
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:344
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:408
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:665
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:392