欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言編程C++編輯器及調(diào)試工具操作命令詳解

 更新時間:2021年09月28日 15:58:04   作者:未綄待續(xù)ξ  
這篇文章主要介紹了C語言編程C++編輯調(diào)試工具操作命令詳解,本文章對C++調(diào)試工具的命令操作進行了詳細的講解,有需要的朋友可以借鑒參考下

一、GCC編譯器

1、GNU工具

編譯工具:把一個源程序編譯成為一個可執(zhí)行程序。

調(diào)試工具:能對執(zhí)行程序進行源碼及匯編級調(diào)試。

軟件工程工具:用于協(xié)助多人開發(fā)或大型軟件項目的管理,如make、CVS、Subvision

其他工具:用于把多個目標文件鏈接成可執(zhí)行文件的鏈接器,或者用作格式轉(zhuǎn)換的工具。

2、GCC簡介

全稱為GNU CC ,GNU項目中符合ANSI C標準的的編譯系統(tǒng)。

編譯如C、C++、Object C 、Java、Fortran 、Pascal、Modula-3和Ada等多種語言。

GCC是可以在多種硬件平臺上編譯出可執(zhí)行程序的超級編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。

一個交叉平臺編譯器,適合在嵌入式領(lǐng)域的開發(fā)編譯

3、GCC編譯器的版本

GNU Compiler Collection
C、C++、Objective-C、Fortran,Java、Ada
http://gcc.gnu.org

4、gcc所支持后綴名解釋

.c ----- C原始程序

.C/.cc/.cxx ----- C++原始程序

.m ----- Objective-C原始程序

.i ----- 已經(jīng)預(yù)處理過的 C原始程序

.ii ----- 已經(jīng)預(yù)處理過的C++原始程序

.s/.S ----- 匯編語言原始程序

.h ----- 預(yù)處理文件(頭文件)

.o ----- 目標文件

.a/.so ----- 編譯后的庫文件

5、編譯器的主要組件

分析器:分析器將源語言程序代碼轉(zhuǎn)換成匯編語言。因為要從一種格式轉(zhuǎn)換成為另一種格式(C到匯編),所以分析器需要知道目標機器的匯編語言。

匯編器:匯編器將匯編語言代碼轉(zhuǎn)換成為CPU可以執(zhí)行字節(jié)碼。

鏈接器:鏈接器將匯編器生成的單獨的目標文件組合成可執(zhí)行的應(yīng)用程序。鏈接器需要知道這種目標格式以便工作。

標準C庫:核心的C函數(shù)都有一個主要的C庫來提供。如果在應(yīng)用程序中用到了C庫中的函數(shù),這個庫就會通過鏈接器和源代碼連接來生成最終的可執(zhí)行程序。

6、GCC的基本用法和選項

Gcc最基本的用法:gcc [options ] [filenames]

-c, 只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源文件生成.o為后綴的目標文件,通常用于編譯不包含主程序的子程序文件。

-o output filename, 確定輸出文件的名稱為output filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out

-g,產(chǎn)生符號調(diào)試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調(diào)試,我們就必須加入這個選項。

-0,對程序進行 優(yōu)化編譯、連接、采用這個選項,整個源代碼會在編譯、連接過程中進行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率更高,但是,編譯、連接的速度就會相應(yīng)的更慢一些。

-02,比-0更好的優(yōu)化編譯、連接,當(dāng)然整個編譯、連接過程會更慢。

-l dirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過程中使用的參數(shù)。

-L dirname,將dirname所指出的目錄加入到程序函數(shù)檔案庫文件的目錄列表中,是在鏈接過程中使用的參數(shù)。

7、GCC的錯誤類型及對策


在這里插入圖片描述

在這里插入圖片描述

8、GCC編譯過程

在這里插入圖片描述

1、預(yù)處理:處理以 " # " 開頭的語句,生成后綴名為 “ .i ” 的文件。

 gcc -E test.c -o test -Wall -lm

在這里插入圖片描述

2、編譯:根據(jù)不同的處理器把 “ *.i ”文件生成 “ *.s ” 匯編文件。

 gcc -S test.i -o test.s

在這里插入圖片描述

3.匯編處理: 匯編代碼并不是電腦能夠直接識別的,要經(jīng)過匯編器的處理生成“ *.o ”的目標文件,可以用file命令查看文件信息。

gcc -c test.s -o test.o

在這里插入圖片描述
在這里插入圖片描述

4、鏈接: 多個 “*.c ” 文件就會生成多個 “ *.o ” 文件,就需要用鏈接器將每個 “ *.o ”文件鏈接起來,標準的C庫是默認自動鏈接的 。

gcc test.o -o test -lm

在這里插入圖片描述

#include <stdio.h>
#include <math.h>
#define N 10
#define _DEBUG_
int main(int argc,const char *argv[])
{
	double m = 615,n;
	m += N ;	
	n = sqrt(m);
#ifdef _DEBUG_
	printf("debug:m=%lf n=%lf \n",m,n);
#else 
	printf("release:m=%lf n=%lf \n",m,n);
#endif
	return 0;
}

在這里插入圖片描述

條件編譯

1、 根據(jù)宏是否定義

#ifdef …#else … #endif

2、根據(jù)宏定義的值

#define DEFINE 1
#if DEFINE …#else … #endif

二、GDB調(diào)試工具

1、Gdb調(diào)試流程:

首先使用gcc對 *.c 文件進行編譯,注意一定要加上選項 -g

1、gcc -g **.c -o **

2、gdb gcc

2、進入代碼調(diào)試模式后

(gdb)l ---- 查看文件

(gdb) b 6 ---- 設(shè)置斷點

(gdb)del 1 ---- 刪除第一個斷點

(gdb)info b ---- 查看斷點情況

(gdb)r ---- 運行代碼

(gdb) p n ---- 查看變量值

(gdb) n (gdb) s ---- 單步運行 n :運行主程序時不進去子函數(shù),s :運行主函數(shù)時進入子函數(shù)

(gdb) c ---- 恢復(fù)程序運行 ------- 直接運行到下一個斷點

(gdb) help [command] ---- 幫助

(gdb)q -----退出

(gdb)set args -----調(diào)命令行參數(shù)用的

以上就是C語言編程C++編輯調(diào)試工具操作命令詳解的詳細內(nèi)容,更多關(guān)于C語言編程C++編輯調(diào)試工具的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • opencv實現(xiàn)機器視覺檢測和計數(shù)的方法

    opencv實現(xiàn)機器視覺檢測和計數(shù)的方法

    在機器視覺中,有時需要對產(chǎn)品進行檢測和計數(shù)。其難點無非是對于產(chǎn)品的圖像分割。本文就來介紹一下機器視覺檢測和計數(shù)的實現(xiàn),感興趣的可以參考一下
    2021-05-05
  • Qt 進度條的實現(xiàn)示例

    Qt 進度條的實現(xiàn)示例

    進度條在很多時候都可以用到,有時我們需要在表格,樹狀欄中直觀顯示任務(wù)進度或消耗百分比,本文就詳細的介紹一下Qt 進度條的使用實例,感興趣的可以了解一下
    2021-06-06
  • 深入探討linux下進程的最大線程數(shù)、進程最大數(shù)、進程打開的文件數(shù)

    深入探討linux下進程的最大線程數(shù)、進程最大數(shù)、進程打開的文件數(shù)

    本篇文章是對linux下進程的最大線程數(shù)、進程最大數(shù)、進程打開的文件數(shù)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++如何實現(xiàn)sha256算法

    C++如何實現(xiàn)sha256算法

    SHA-256算法由于其強大的安全性,已成為國際標準和許多安全協(xié)議的推薦算法,在密碼存儲、數(shù)字簽名、區(qū)塊鏈技術(shù)、SSL/TLS協(xié)議、數(shù)據(jù)完整性驗證、系統(tǒng)安全審計等眾多應(yīng)用領(lǐng)域,SHA-256算法都至關(guān)重要,這篇文章主要介紹了C++如何實現(xiàn)sha256算法,需要的朋友可以參考下
    2024-07-07
  • 基于MFC和OpenCV實現(xiàn)角點檢測

    基于MFC和OpenCV實現(xiàn)角點檢測

    這篇文章主要為大家詳細介紹了基于MFC和OpenCV實現(xiàn)角點檢測,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 基于Qt實現(xiàn)駕??颇靠荚囅到y(tǒng)的示例代碼

    基于Qt實現(xiàn)駕??颇靠荚囅到y(tǒng)的示例代碼

    這篇文章主要為大家詳細介紹了如何基于Qt實現(xiàn)駕??颇靠荚囅到y(tǒng),文中的示例代碼講解詳細,對我們學(xué)習(xí)Qt有一定幫助,需要的可以參考一下
    2022-07-07
  • C/C++實現(xiàn)日期計算器的示例代碼

    C/C++實現(xiàn)日期計算器的示例代碼

    本篇文章主要介紹了C/C++實現(xiàn)日期計算器的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 解析Linux下的時間函數(shù):設(shè)置以及獲取時間的方法

    解析Linux下的時間函數(shù):設(shè)置以及獲取時間的方法

    本篇文章是對Linux下的時間函數(shù):設(shè)置以及獲取時間的方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實現(xiàn)大整數(shù)乘法(字符串乘法)

    C++實現(xiàn)大整數(shù)乘法(字符串乘法)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)大整數(shù)乘法、字符串乘法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++二叉搜索樹模擬實現(xiàn)示例

    C++二叉搜索樹模擬實現(xiàn)示例

    本文主要介紹了C++二叉搜索樹模擬實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11

最新評論