自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用C++語(yǔ)言做Linux開(kāi)發(fā)工具之編譯器和調(diào)試器選擇要素

系統(tǒng) Linux
之前報(bào)道講到了用C++語(yǔ)言做Linux開(kāi)發(fā)工具編輯器的選擇,今天我們繼續(xù)看看用C++語(yǔ)言做Linux開(kāi)發(fā)工具編譯器和調(diào)試器選擇要素

編譯和調(diào)試往往成為編輯中重要的兩點(diǎn),所以對(duì)于編譯器和調(diào)試器的選擇就變得至關(guān)重要了,今天我們就告訴大家用C++語(yǔ)言做Linux開(kāi)發(fā)工具之編譯器和調(diào)試器選擇要素,以便大家更效率的進(jìn)行開(kāi)發(fā)

編譯器

用C++語(yǔ)言做Linux開(kāi)發(fā)工具編譯器首選GCC(GNU COMPILER COLLECTION)。原因有兩個(gè),它是GNU開(kāi)源的,同時(shí)它對(duì)標(biāo)準(zhǔn)C++的支持度高達(dá)96.15%。而VC++6.0的支持度只有83.43%。 GCC不僅是通常意義上的C或C++的編譯器,它還可以編譯java等其它語(yǔ)言。gcc是gnu c的編譯器,g++是gnu c++的編譯器, 而EGCS(Enhanced GNU Compiler Suite)可以認(rèn)為是gcc的改進(jìn)版。

編譯語(yǔ)言從源程序到目標(biāo)代碼會(huì)經(jīng)過(guò)如下幾個(gè)階段:源程序->匯編程序->編譯成obj程序->鏈接成最終可執(zhí)行程序。我們可以通過(guò)一條編譯指令來(lái)完成所有步驟。也可以分步執(zhí)行。gcc有三個(gè)重要選項(xiàng)-E(只進(jìn)行預(yù)處理), -S(生成匯編代碼), -g(生成帶原代碼調(diào)試符號(hào)的可執(zhí)行文件,如果想用gdb調(diào)試的話,就應(yīng)該在編譯時(shí)打開(kāi)這個(gè)選項(xiàng))。

用C++語(yǔ)言做Linux開(kāi)發(fā)工具GCC可以看作一個(gè)軟件包,除了編譯工具,它還集成了調(diào)試器gdb,性能分析工具gcov, gprof。只要我們裝好了GCC,這些強(qiáng)大工具就可以直接使用了。

通過(guò)gcov,我們可以查看一個(gè)程序,源代碼中每行代碼的運(yùn)行次數(shù)。我們優(yōu)化運(yùn)行次數(shù)最多的代碼,那么就可以大大優(yōu)化程序。使用gcov時(shí),需要打開(kāi) GCC的fprofile-arcs和ftest-coverage兩個(gè)選項(xiàng)。gcov中常用的選項(xiàng)有-b分支統(tǒng)計(jì)信息。

通過(guò)gprof工具,我們可以查看函數(shù)之間的調(diào)用順序,及各個(gè)函數(shù)運(yùn)行的時(shí)間。我們可以將gprof理解為linux/unix自帶工具time的加強(qiáng)版。使用gprof時(shí),需要打開(kāi)GCC的pg選項(xiàng)。

gcov和 gprof的共同點(diǎn)是在編譯程序時(shí),加入自己的一些輔助信息,由此來(lái)進(jìn)行程序診斷。除了,這些優(yōu)化手段,我們還可以使用一些內(nèi)存泄漏工具,來(lái)減少野指針,未釋放的內(nèi)存空間。

調(diào)試器

用C++語(yǔ)言做Linux開(kāi)發(fā)工具GDB即GNU的調(diào)試器,它是GCC附帶的一個(gè)性能優(yōu)質(zhì)的調(diào)試器。通過(guò)GDB和腳本結(jié)合,我們可以很好的實(shí)現(xiàn)回歸測(cè)試。

用C++語(yǔ)言做Linux開(kāi)發(fā)工具GDB可以運(yùn)行于CLI和GUI兩種模式。默認(rèn)GDB是CLI模式的,我們可以去下載和安裝GUI模式的GDB,例如xxgdb, ddd等。一個(gè)更好的方式是在 EMACS中使用GDB。GDB包括visual studio工具的所有調(diào)試功能,還包括它沒(méi)有的功能。它除了支持,我們一般的設(shè)置斷點(diǎn),單步跟蹤,step in, step out, step over等,還有一些強(qiáng)大的功能。在gdb中,我們可以有以下幾種暫停方式:斷點(diǎn)(BreakPoint)、觀察點(diǎn)(WatchPoint)、捕捉點(diǎn)(CatchPoint)、信號(hào)(Signals)、線程停止(Thread Stops)。

下面列舉幾個(gè)讓我印象深刻的功能。1)通過(guò) watch指令,可以讓程序在某個(gè)變量的值發(fā)生變化時(shí),暫停下來(lái)。2)通過(guò)print指令,在程序運(yùn)行時(shí),設(shè)置變量的值,運(yùn)行一個(gè)程序自身支持的一個(gè)方法。3)通過(guò)until指令,我們可以讓程序在運(yùn)行到某個(gè)程序時(shí)暫停下來(lái)。4)通過(guò)break.. if指令,使得程序在滿足某個(gè)bool表達(dá)式時(shí),暫停下來(lái)。

【編輯推薦】

  1. Novell裁掉部分openSUSE Linux開(kāi)發(fā)者
  2. 騰訊Linux QQ團(tuán)隊(duì)現(xiàn)招聘:Linux開(kāi)發(fā)與測(cè)試工程師
  3. IBM呼吁Linux開(kāi)發(fā)者勿模仿Windows用戶界面
  4. 開(kāi)源大師齊聚京城 Linux開(kāi)發(fā)者研討會(huì)開(kāi)幕
  5. 國(guó)際Linux開(kāi)發(fā)者盛會(huì)在中國(guó)召開(kāi)
     
責(zé)任編輯:chenqingxiang
相關(guān)推薦

2010-05-28 13:53:41

Linux開(kāi)發(fā)工具

2010-05-28 14:34:17

Linux開(kāi)發(fā)工具

2010-12-21 10:16:53

2010-05-28 14:44:42

Linux開(kāi)發(fā)工具

2010-05-28 14:55:17

Linux編程工具

2010-06-04 17:37:45

Linux編程工具

2010-01-18 10:34:21

C++編譯器

2013-12-02 09:34:58

工具火狐Web

2010-01-21 09:11:38

C++編譯器

2010-01-18 10:28:15

C++編譯器

2023-08-22 08:00:00

編譯器開(kāi)發(fā)RustOCaml

2010-05-28 15:34:14

Linux編程工具

2010-10-20 13:43:37

C++編譯器

2014-03-03 10:00:53

編譯器集成開(kāi)發(fā)環(huán)境

2010-01-14 15:29:44

C++編譯器

2010-02-03 13:14:03

C++編譯器命令

2023-11-13 22:03:34

IDEC語(yǔ)言編譯器

2020-03-16 10:05:13

EmacsGUDLinux

2010-01-12 16:42:59

C++編譯器

2010-01-27 13:53:40

強(qiáng)大的CC++編譯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)