1. 程式人生 > >Linux下的C/C++開發與除錯工具

Linux下的C/C++開發與除錯工具

  Linux開發環境相當完善,且功能完整,它主要由GNU的編譯器和庫,以及大量的系統例程及庫組成,能夠支援C++、C和組合語言程式,重點是針對C++和C語言。因為Linux的原始碼主要是用C語言實現的,開發人員可以方便地獲取並進行修改和重新編譯,因此為Linux作業系統提供了一個強大的C語言開發環境至關重要。Linux開發環境包括GNU編譯工具集、除錯工具和相關的實用工具。   1.GNU編譯工具集GCC (1) cpp,C語言前處理器。負責巨集展開、條件編譯指令、包含其他標頭檔案和行控制等功能。呼叫前處理器是從原始碼建立二進位制可執行程式的第一步。 (2) as,彙編器。用於根據組合語言的原始檔創建出帶有.o字尾的二進位制目標檔案。 (3)ld,連結器。用於將目標檔案與系統目標檔案和庫檔案進行連結,建立二進位制的可執行程式。   2.GNU除錯工具GDB    GDB是一個威力強大和應用廣泛的偵錯程式。GDB可以建立帶有特定除錯資訊的程式,從而可以在程式碼中設定斷點並在執行時單步執行程式碼。GDB中的常用指令包括list(列原始碼), break(設定斷點), run(執行程式), next(執行下一行), step(單步執行一行), print(顯示錶達式), continue(繼續執行至下一點斷點或結束), info(顯示偵錯程式狀態資訊), show(顯示被除錯程式資訊), backtrace(顯示呼叫軌跡,同where, info stack)等。 3.實用工具集Binutils (1) ar, 歸檔各程式,建立、修改並從程式碼歸檔中提取檔案。 (2) nm, 用於列出目標檔案中的符號。 (3) objcopy, 用於複製和轉換目標檔案。 (4) objdump, 用於顯示二進位制檔案的內容。 (5) ranlib, 為歸檔檔案的內容生成索引。 (6) size, 列出目標檔案的總體大小及各段的大小。 (7) strings, 列出檔案中的可列印的字串。 (8) strip, 清除檔案是的符號。 (9) readelf, 顯示檔案中有關ELF格式的資訊。 (10) strace, 用於跟蹤程式執行的系統呼叫和所接收到的訊號。 (Aiguille.LIU / 劉愛貴 [email protected])

相關推薦

LinuxC/C++開發除錯工具

  Linux開發環境相當完善,且功能完整,它主要由GNU的編譯器和庫,以及大量的系統例程及庫組成,能夠支援C++、C和組合語言程式,重點是針對C++和C語言。因為Linux的原始碼主要是用C語言實現的,開發人員可以方便地獲取並進行修改和重新編譯,因此為Linux作業系統提供

LinuxC++程式開發除錯

gcc的基本用法 g++ 與 gcc的關係: Linux的gcc和g++的區別 用gcc編譯C++檔案 anyway,還是用g++吧 假設有一個原始檔為main.cc #include <iostream> int main(int args, char** argv

linux入門-使用vs2015開發除錯linux應用

如果覺得文章對你有幫助先點個贊 1、常見Linux下開發的流程 linux :vim/emacs +GDB windows+linux:source insight+winscp+GDB 都無法解決一個問題GDB除錯需要學習大量的GDB命令~而且操作起來不是很方便

Vue開發除錯工具--除錯工具

主要講三個東西: Vue.js devtools開發工具的使用 使用debugger和sourcemap除錯Vue元件 vscode中除錯Vue元件 Vue.js devtools開發工具的使用

linuxgdb的安裝除錯

1 安裝gdb 在Debian GNU/Linux Desktop中,應用程式 >> 附件 >> Root Terminal。輸入密碼,在Root許可權下的終端下輸入: apt-get update …… apt-get install 

LinuxC語言開發

xuni autoconf htm 參加 eve http 學習資料 inux c語言開發 工具 學會使用vim/emacs,vim/emacs是linux下最常用的源碼編輯具,不光要學會用它們編輯源碼,還要學會用它們進行查找、定位、替換等。 學會makefile文件的編

LinuxC/C++開發基礎(編寫makefile、編譯C/C++、連結、可執行程式)

本文重點介紹C/C++原始碼工程的編譯連結,編譯器gcc/g++的安裝配置略過... 1. 安裝配置gcc g++ 2. 建立檔案 test.h /test.c / file.h  / file.cpp  3. 編譯.o庫: gcc -c / g++ -c     連結生成靜

linuxC語言開發(程序等待)

                【 宣告:版權所有,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    所謂程序等待,其實很簡單。前面我們說過可以用fork建立子程序,那麼這裡我們就可以使用wait函式讓父程序等待子程序執行結束後才開始執行。注意,為了證明父程序確實是等

linuxC語言開發(訊號處理)

                【 宣告:版權所有,歡迎轉載,請勿用於商業用途。  聯絡信箱:feixiaoxing @163.com】    訊號處理是linux程式的一個特色。用訊號處理來模擬作業系統的中斷功能,對於我們這些系統程式設計師來說是最好的一個選擇了。要想使用訊號處理功能,你要做的就是填寫一個訊

linux進行C++開發所注意事項

轉載自:https://www.cnblogs.com/lidabo/p/5888997.html 最近專案需求,需要在Linux下開發C++相關專案,經過一番摸索,簡單總結了一下如何通過VS Code進行編譯除錯的一些注意事項。 關於VS Code在Linux下的安裝這裡就不提了,不管是C

Linux 使用gsoap開發C web service

由於工作需要,最近研究了一下使用 gsoap 開發 web service.  以下為個人理解,想和大家一起分享分享,大牛勿噴。 首先來看看什麼是web service , 從名字表面意思上理解即為一種 web 的服務, 服務就是給別人幹活的,具體乾的什麼活,那就是你來負責

Linux搭建C/C++開發環境

1.安裝編譯器 Linux下最流行的編譯器是gcc 安裝gcc編譯器 sudo apt-get install build-essential 2.然後建立一個C程式原始檔,並在編輯器中編碼 touch Hello.c vi Hell

LinuxC語言開發(程序等待)

 所謂程序等待,其實很簡單。前面我們說過可以用fork建立子程序,那麼這裡我們就可以使用wait函式讓父程序等待子程序執行結束後才開始執行。注意,為了證明父程序確實是等待子程序執行結束後才繼續執行的,我們使用了sleep函式。但是,在linux下面,sleep函式的引數

linuxC語言開發(執行緒等待)

和多程序一樣,多執行緒也有自己的等待函式。這個等待函式就是pthread_join函式。那麼這個函式有什麼用呢?我們其實可以用它來等待執行緒執行結束。 #include <stdio.h> #include <pthread.h> #include

LinuxC獲取當前時間

time() 使用 ble timespec -1 ber 區間 本地 指向 Linux下用C獲取當前時間,具體如下: 代碼(可以把clock_gettime換成time(NULL)) ? 1 2 3 4 5 6 7 8 9 10 void getN

Linux軟件安裝卸載:rpm和yum工具

.rpm rhel enabled arch 發包 ble 功能 repos 簡潔 一、rpm工具 rpm命令是RPM軟件包的管理工具。rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程序,由於它遵循GPL規則且功能強大方便,因而廣受歡迎。逐漸受

linux利用CC++ 語言調用需要root權限的函數

編譯程序 註意 步驟 oot 登錄 調用 get bsp 屬於 1、setuid法(1)登錄root用戶,將程序設置成root:root所有者(等價於:登錄root用戶編譯程序)。也可直接將普通用戶加入root組中,那麽編譯程序不用來回切換用戶。(2)登錄root用戶設置程

linux編譯c語言教程

準備工作 - Linux系統 - 懂得Linux系統下編輯器vim/vi軟體的使用 - 懂得簡易的c語言程式設計(初次學習的同學可以直接複製文章末尾的原始碼) 總結一下:有Linux系統,會使用Linux系統下的文字編輯器,有一點c語言基礎即可。 建立c語言檔案並編譯

linux 執行C程式

#include<stdio.h> int main(){ int a=100,b=25; if(a>b) printf(" The high value is %d\n",a); else printf(" Th

LinuxC語言函式perror

perror的函式原型為`void perror(const char *s)` 這個函式會先輸出你傳給他的實參 s 所指的字串,後面再加上錯誤原因字串。此錯誤原因依照全域性變數errno 的值來決定要輸出的字串。 在庫函式中有個errno變數,每個errno值對應著以字串表示的錯誤型別。當