C 除錯幫助簡介

2021-08-10 14:18:59 字數 1203 閱讀 8689

主要思想是:程式所包含的除錯**僅在開發過程中執行。當應用程式已經完成,並且準備提交時,就會將除錯**關閉。這種方法會用到兩項預處理功能:assert 和ndebug。

定義在標頭檔案中

的所謂預處理巨集其實是乙個預處理變數,它的行為有點類似於內聯函式。使用乙個表示式作為它的條件:

assert(expr);

只要ndebug未定義,assert巨集就求解條件表示式expr,如果結果為false,assert輸出資訊並且終止程式的執行。如果該表示式有乙個非零(例如:true)值,則assert不做任何操作。

assert的行為依賴於乙個名為ndebug的預處理變數的狀態。如果定義了ndebug,則assert什麼都不做。

使用:g++ -d ndebug -o test test_console.cpp

這條命令的作用等價於在main.c檔案的一開始寫#define ndebug

可用ndebug預處理變數實現有條件的除錯**:

int main( void )

如果ndebug未定義,那麼程式就會將資訊寫道cerr中,如果ndebug已經定義了,那麼程式執行時將會跳過#ifndef和#endif之間的**。

預處理器還定義了其餘五種常有用的常量:

例子:

// test_console.cpp

#include

#include

#include

using

namespace

std;

int main (int argc, char** argv)

執行:

g++

-d ndebug -o test test_console.cpp -std

=c++

11./test safd

輸出:

argc = 2

error: test_console.cpp :in funciton main at

line

13 compiled on

nov9

2017

at14:55:45

./test

safd

(37)除錯幫助

c 程式設計師有時會用到一種類似於標頭檔案保護的技術,以便有選擇地執行除錯 程式可以包含一些用於除錯的 但這些 只在開發程式時使用。當應用程式編寫完成準備發布時,要先遮蔽掉除錯 這種方法用到兩種預處理功能 assert和ndebug。assert是一種預處理巨集。所謂預處理巨集其實是乙個預處理變數,...

c語言除錯工具簡介

概述 測試有很多方面,例如執行時間 函式呼叫關係圖 覆蓋度 效能分析 profiling 記憶體訪問越界 segmentation fault 緩衝區溢位 stack smashing 合法地進行非法的記憶體訪問?所以很危險 記憶體洩露 memory leak 測試工具簡介 1.測試程式的執行時間t...

PHP xdebug 幫助除錯php 程式

以下步驟為使用source 包去安裝xdebug軟體包。tar xzf xdebug 2.1.0.tgz cd xdebug 2.1.0 phpize configure enable xdebug 如果提示找不到php config 則請用以下命令編譯 configure enable xdebu...