1991年10月5日,Linus Torvalds 在互聯網上發佈消息,宣佈他本身開發的內核系統誕生了。他將內核源代碼保存在芬蘭最大的 FTP 網站上,命名爲 Linux,取義 Linus's Minix,並向全世界全部人公佈。這也使得10月5日成爲一個特殊的日子,以至以後的許多 Linux 版本都選擇在這個日子發佈。固然,現在的 Linux 一詞被遞歸定義爲 Linux is not Unix。linux
Linux 是一套無償使用和自由傳播的類 Unix 操做系統,嚴格來講,Linux 一詞僅指其操做系統內核,不包括任何附加軟件。但現在 Linux 擁有數不勝數的發行版本,廣義上它們均可以叫作 Linux,典型表明如 Debian 系列、RedHat 系列、Arch 系列和 SUSE 系列等,它們也都有着各自的側重和堅持。正則表達式
儘管咱們使用 Windows 或 OS X 操做系統的時候可能不會很在乎桌面環境,但在 Linux 下咱們將須要考慮選擇一箇中意的桌面環境——也許是多個——或者在某些狀況下,徹底沒必要安裝桌面環境,這是很是靈活且自由的。桌面環境多是由大量組件構成的完整套件,也可能僅僅只是一個簡單的窗口管理器,但不管如何,它們的核心目標都是爲用戶提供一個直觀易用的可視化環境和視覺工做區。著名的大型桌面環境 Gnome 和 KDE 提供了傑出的圖形表現和豐富的功能組件,輕量桌面環境如 Xfce、mate 和 lxde 等也算是「麻雀雖小,五臟俱全」,更有其餘一些專一簡潔、美觀或是高效的桌面環境可選,所以咱們說 Linux 的桌面環境的選擇是「靈活且自由」的。算法
Linux 系統內核並不包括圖形服務。想要使用圖形環境,必須先安裝 X11
,即 X Window 系統,它是最先應用於傳統 Unix 系統的圖形用戶接口,工做於內核與桌面環境之間。這使得 Linux 擁有豐富的桌面環境以供選取。儘管桌面環境可能有風格迥異的設計,但大致上都應包括登陸管理器、窗口管理器、應用啓動器等組件,可能還包括一套開箱即用的軟件套件,如編輯器、瀏覽器和終端模擬器等。大部分狀況下,在使用桌面發行版的安裝鏡像正確安裝系統後,桌面環境都已經預裝並正常工做了。shell
這裏以 Manjaro 操做系統爲例,簡要說明系統安裝步驟數據庫
從 Manjaro 官網 的下載頁面選擇合適的版本並將 iso
鏡像文件下載到本地(以 KDE 版本爲例)。vim
若是使用虛擬機,則此時新建一個虛擬機,將剛纔下載的 iso
鏡像裝載到虛擬機上啓動;若要經過U盤安裝到本地機器,則可用 Rufus 軟件載入鏡像並以 DD
模式寫入U盤,而後重啓計算機,注意正確設置 BIOS 以從U盤啓動。瀏覽器
在 Manjaro 的啓動頁面進行相關設置,若在接下來的步驟中出現驅動問題,可重回此步並將 driver
項設爲 non-free
。安全
進入 live
系統後,啓動安裝程序,按照提示配置好各項參數,最後點擊安裝便可。bash
安裝完成後,重啓計算機並移除U盤,在 Grub 頁面選擇剛剛安裝的 Manjaro 操做系統。服務器
Linux 使用的磁盤分區格式爲 ext4
,而 Windows 並不支持(不會顯示在資源管理器中)這種格式,所以對於雙系統的用戶來講,Linux 系統所佔用的磁盤空間須要合理分配。Linux 將文件系統組織爲一個樹形結構,與 Windows 以盤符區分的方式有所不一樣,Linux 的全部目錄都是 /
目錄的子目錄,這個 /
目錄稱爲根目錄。對於管理多個分區的 Linux 來講,它將各個磁盤分區掛載到不一樣的目錄下,分區的全部文件目錄都經過掛載到的目錄來訪問,所以對於 Linux 文件系統來講,分區管理是透明的。此外,對於U盤、CD等可移動介質,Linux 也是經過即時掛載、過後卸載的方式管理,這是 Linux 在文件系統上區別於 Windows 的一大特色。
Linux 普通文件系統分區格式通常用 ext4
,而用做交換區的 swap
分區則有專用的 swap
格式,提供與 Windows 虛擬頁面文件相似的虛擬內存功能,只不過 Linux 的作法更加完全。這個分區的大小通常設爲與物理內存大小相等。
咱們剛纔提到,Linux 的目錄樹是從惟一的一個 /
目錄出發,這彷佛預示着,Linux 不能如 Windows 那樣用不一樣的盤符來分隔不一樣種類的文件,但狀況偏偏相反,因爲 Linux 有掛載點這一說,雖然從文件系統層面上看,全部文件都組織在一個目錄樹下,但從物理分區上講,在目錄樹上的任一節點均可以掛載不一樣的分區,這就使得不管如何進行分區,Linux 的文件系統除了選擇一個節點掛載它們以外無需做出任何更改,而且能夠實現多個 Linux 系統在某個節點共享同一份數據,或者在操做系統每次啓動時爲它掛載不一樣的分區,從而實現每次運行時均可以使用不一樣的數據。
另外,在 Linux 的文件系統中,以 .
開頭的文件名被認爲是隱藏文件,更特殊的,./
和 ../
分別意味着 當前目錄 和 上級目錄 ,它們不是實際存在的文件,僅表明兩個入口。事實上,Linux 隱藏文件的設定並不是爲了對某些文件進行保密,而只是將不須要顯示在前臺的文件加上標記,它們一般是系統和一些軟件的資源文件或應用數據目錄,而且用戶不須要在前臺看到它們。
NFS - 網絡文件系統,是一套可擴展、高性能、高質量的共享文件系統,只需從一個或多個服務器上創建數據倉庫,多個客戶端便可經過用戶接口訪問數據並加載到本地空間,如同本地的可插拔文件系統通常。它與普通文件系統惟一的區別在於其 I/O 請求是跨越網絡完成的。
Linux 有運行級別的概念,目前來講定義了七種運行級別:
這些運行級別分別對應着不一樣的服務組,這些服務項在開機時由 init
負責啓動,通常這些都存儲在 /etc/rc.d/rcN.d/
目錄下,但有些系統並不遵循這個標準——好比 Arch。通常來講,用戶經常使用的默認運行級別爲3和5——做爲服務器時一般爲3,做爲桌面操做系統一般使用5——當咱們須要執行一些特殊操做時,可能須要手動進入單用戶狀態,如重置 root
用戶密碼等。
注:
若要恢復刪除的系統文件,請進入救援模式而不是單用戶模式,由於單用戶模式也須要從硬盤引導啓動!
不要將系統默認啓動狀態設爲0或6,不然系統將沒法正常啓動,切記!
Linux 系統的一個很是重要的工具就是 shell,它是 Linux 用戶操做計算機的橋樑,其本質是一個命令解釋器(CLI),文字模式下系統啓動後進入的界面就是 shell,而在圖形界面中一般要經過 終端模擬器 來進入。所謂終端,指的就是這種經過 shell 進行用戶交互的軟件。在 KDE 下,咱們使用 Konsole 終端模擬器。著名的終端模擬器還有 Terminal、Yakuake 等。而選擇好終端模擬器後,咱們還須要選擇一個 shell ——默認狀況下,系統預設 shell 是 bash ——個人選擇是 Zsh。
前面提到,shell 是一個命令解釋器,那麼它的工做就很好定義了:接收用戶輸入的命令,執行它們,並輸出執行結果。這就是典型的 shell 的工做模式。shell 不少預置命令都由兩個字母構成——事實上,若非鍵盤上只有26個字母,可能如今的命令就只有一個字母了——這些命令可以執行簡單的文件目錄管理。
# 切換工做目錄 cd ~/Documents # 列出目錄下的文件/目錄列表 ls [-alh] # 顯示當前工做目錄 pwd [-P] # 更新文件的修改日期,通常用來建立文件 touch main.c # 建立目錄 mkdir test # 移動和複製文件,可用於重命名 mv a.c test/ mv a.c b.c cp a.c a.c.back # 刪除文件或目錄 rm a.c rm -r test/ # 建立連接文件,相似 Windows 快捷方式 ln -s ~/Documents/clang # 列出文件內容 cat a.c # 回顯命令,可顯示環境變量 echo Hello, $HOME.'\n'This is my Path:'\n'$PATH
除了一些特殊命令外,shell 中運行的命令一般都是實際存在的程序,shell 會從用戶的 PATH
環境變量中定義的路徑查找命令並執行,路徑之間以 :
分隔。一般,PATH
環境變量並不包括 當前目錄,所以,若要執行目錄下的程序,應以 ./
開頭。
做爲命令解釋器,shell 除了可以解釋執行用戶輸入的指令外,也可以執行腳本文件。下例是一個典型的 shell 腳本:
#!/usr/bin/bash # 我是註釋 # 巧了,我也是 echo "Currently working in `pwd`" echo "Host: `hostname`" ret=yes ping -c 2 www.baidu.com > /dev/null || ret=no echo "Am I online? $ret" echo "Now running: $0" figlet -f standard "The end."
要運行這個腳本,能夠爲它指定一個解釋器:
bash xxx.sh
也能夠先賦予它 可執行權限
,再直接執行:
chmod +x xxx.sh ./xxx.sh。
一個特殊的腳本是,shell
在用戶目錄下保存的名爲 .bashrc
的文件(或 .zshrc
等),它是屬於 shell
的一個資源文件,這意味着每次啓動用戶的 shell
時,它都會預先尋找並分析此文件的內容,並執行相應的初始化命令。常見的用法包括在此文件中添加別名定義、添加環境變量配置等。
# ~/.bashrc alias ll='ls -alF' alias df='df -h' export PATH=PATH:$HOME/.local/bin
遠程終端 Telnet 和 SSH,顧名思義,它們提供了終端遠程訪問的服務,其中 Telnet 因徹底不加密、採用明文傳輸而一般只用於受信網絡,如企業內部網絡、局域網絡等,而 SSH 採用非對稱加密算法保證了交互鏈接的安全性,適用於公開網絡。兩者在功能使用上相似,這裏只討論 SSH 鏈接方式。Telnet 有時也用來測試端口的連通性。
要在客戶端使用 SSH 鏈接到服務器,首先要確保服務端已正確配置了 sshd
服務。以 CentOS 7 服務器爲例,安裝並配置 sshd
:
# 安裝 sshd yum install openssh-server -y # 啓動服務 systemctl start sshd # 修改 sshd 配置 nano /etc/ssh/sshd_config # 這裏通常須要取消註釋 PasswordAuthentication yes 行 # 以容許經過用戶密碼遠程登陸 # 重啓服務 systemctl restart sshd
按照慣例,咱們不以 root
用戶登陸。事實上,不少狀況下,遠程 root
用戶登陸也是默認禁用的。若服務器還沒有添加非 root
用戶,可以使用如下命令添加:
# -G 指定附加用戶組,-g 指定主要用戶組 useradd -m -G wheel dog # 設置新用戶密碼 passwd dog
到這裏,服務器端的 sshd
配置已經完成了,只要在防火牆中開放服務端口,遠程客戶端就能夠鏈接。不論您的服務器系統使用 iptables
仍是 firewalld
,默認狀況下它們都已經開放了22端口,也就是 sshd
服務的默認端口。若有例外,或您要使用其餘端口,請穩步防火牆相關文檔。那麼如何從客戶端鏈接到服務器系統呢?第一種方法是使用用戶密碼登陸。
# 使用 用戶名@主機地址 的形式,能夠是ip地址或域名 ssh dog@192.168.1.2 # 或用 -l 指定用戶名 ssh 192.168.1.2 -l dog # 使用 -p 指定鏈接端口 ssh dog@192.168.1.2 -p 22
更懶一點,若是不但願每次都輸入冗長的用戶名和主機地址,還能夠選擇將它們保存在 ssh
配置文件中:
# 編輯配置文件 nano ~/.ssh/config
按如下格式填寫遠程服務信息:
Host superuser Hostname 192.168.1.2 User root Port 24 Host dog Hostname 192.168.1.2 User dog Port 22
此時就能夠分別使用 ssh superuser
和 ssh dog
命令鏈接遠程終端了——固然,密碼仍是要輸入的。若是連密碼也懶得輸入怎麼辦呢?這就不得不說咱們的第二種鏈接方式了:密鑰登陸。事實上,SSH 服務自己就是使用非對稱加密確保其鏈接的安全性,天然也就擁有經過密鑰對完成登陸的功能。要實現公/私鑰登陸,須要進行如下配置:
# 客戶端生成 rsa 密鑰對 ssh-keygen -t rsa # 這裏會要求輸入密碼,如無需密碼可留空 # 若是設置了密碼,則每次登陸都要先輸入密鑰密碼 # 下面將本地生成的公鑰上傳至服務器 ssh-copy-id dog # 這裏將會要求輸入密碼,並極可能會是您最後一次密碼登陸,珍惜吧
本地的 ~/.ssh
目錄下將會多出兩個文件 id_rsa
和 id_rsa.pub
,分別存儲私鑰和公鑰,請必定記住不要泄露您的私鑰。服務器的 ~/.ssh
目錄下也會多出一個 authorized_keys
文件,用以保存全部受信任的客戶端的公鑰信息。
除了遠程登陸外,scp
命令還提供了在本地機器和遠程主機之間傳送文件和目錄的方法。
# 將當前目錄下的文件複製到遠程主機的主目錄下 scp main.c dog@192.168.1.2:. # 從遠程主機複製整個目錄到本地,並指定端口 scp -r -P 22 dog:./minecraft .
在計算機集羣配置過程當中,有時可能也會用到
ssh-keyscan
命令來大規模收集集羣內全部主機信息,並將這些信息複製到各機器目錄下,以實現集羣內任意兩臺機器之間都可以無密碼互訪。ssh
還能夠用於從內網主機鏈接到公網主機並創建隧道,從而實現內網穿透的功能。而爲了確保鏈接的持續性,通常會使用擁有自動重連功能的autossh
代替ssh
。有時,您也能夠從客戶端經由主機A鏈接到主機B——若是有必要的話。另外,您還可使用sshfs
命令來掛載遠程文件系統,這與 NFS 類似。相關命令使用方法請參閱 SSH 手冊頁和相關文檔。
對於任意一個目錄,執行 ls -hl
命令並觀察其輸出,咱們將看到,每一個項目以前都有一個由十位字符構成的字符串,這表明了一個文件(或目錄)的類型和權限。其形式爲 -rwxr-xr-x
,第一位表明類型(-/d/l/c/b/s/p),後面九位每三個一組,每位分別表明其讀、寫、可執行權限,每組分別表示所屬用戶、所屬組和全部人的權限。
Linux 中用戶與組的概念比 Windows 要深入得多,除普通用戶外,最常涉及的是 root
用戶和 wheel
組。在 Linux 下,root
用戶是系統的最高管理員,擁有操做任何文件目錄的權限,也就有着誤操做致使系統崩潰的風險,也可能因執行惡意程序致使系統被劫持,所以通常狀況下,咱們不會以 root
身份做業。但與此同時,不少任務又須要這些權限才能執行,好比安裝應用或更改啓動項,因而 sudo
命令提出了一種普通用戶臨時獲取 root
權限的可能,它容許用戶臨時獲取權限來執行某些操做,而且能夠配置用戶/組使用 root
身份能夠執行哪些操做。通常狀況下,做爲桌面版用戶,咱們也沒必要去細分這些權限,因此能夠簡單地將本身加入到 wheel
組便可擁有 sudo
的權限,wheel
組正是預設的擁有 sudo
權限的組。
與 Windows 系統不一樣,儘管 Linux 也容許用戶直接運行可執行文件,但這些軟件一般會由於依賴問題等緣由而不能正常工做。查找和安裝應用軟件最好的方式是經過軟件倉庫,不一樣的發行版一般會有不一樣的軟件倉庫,咱們稱之爲 源,用來查找和下載安裝軟件包並解決依賴關係的工具稱爲 包管理器,如 Ubuntu 使用 apt
和 dpkg
,CentOS 使用 yum
和 rpm
,Manjaro 使用 pacman
等。
咱們剛纔屢次說起 依賴,簡單來講就是指某個包使用了另外一個包提供的接口,於是須要該包的支持才能運行,故安裝某個包可能同時須要爲它安裝全部的依賴,卸載某個包又要考慮有沒有哪些包是依賴它而運行的,同時還要注意是否存在多個包依賴着同一個包的不一樣版本。這些檢查和操做是必要的,不然長此以往你將不知道本身的系統上哪些包是無用的,哪些是不可或缺的,也就不敢輕易安裝和卸載應用了。
用戶獲取軟件包的來源一般是官方或官方信任的鏡像站點,這些一般叫作軟件倉庫或 源。做爲天朝子民,爲了加速軟件包的下載,咱們每每會選擇國內的鏡像源,如清華源、中科大源、華爲雲等。更改系統鏡像源的操做這裏不做細講,咱們以 apt
和 pacman
爲例,簡要介紹軟件安裝、卸載和搜索等操做。
# 更新數據庫 sudo apt update sudo pacman -Sy # 以更新軟件包的方式更新系統 sudo apt upgrade sudo pacman -Su # 安裝 vim sudo apt install vim sudo pacman -S vim # 卸載 libreoffice sudo apt remove libreoffice* sudo pacman -R libreoffice*
Linux 終端若沒法承擔文字編輯任務,便擔不得強大之名。事實上,若論終端文字編輯工具,nano
、vim
、Emacs
均爲此類,但 nano
側重簡單易用,而 vim
和 Emacs
則擁有着強大的功能。較之 Emacs
提供了豐富的組合鍵,vim
則更傾向於使用單鍵執行操做。若您更喜歡 Emacs
的優雅,請暫且移步 Emacs
教程;若您與我一樣選擇 vim
,歡迎繼續閱讀。
在終端下啓動 vim
# 啓動 vim [並打開文件 xxx.sh] vim [xxx.sh]
vim
各類模式
啓動 vim
後,默認進入的是 NORMAL
模式,即普通模式(有時也稱命令模式),在此模式下能夠移動輸入光標,執行單鍵命令,並可鍵入 :
激活底部命令模式。在此模式下,h
/j
/k
/l
分別表示左/下/上/右。當按下 i
/a
(I
/A
) 時,將從當前光標所在字符之前/後(行首/行尾)進入 INSERT
模式,即插入模式。若按下 v
/V
/Ctrl
+v
時進入 VISUAL
/ VISUAL LINE
/ VISUAL BLOCK
模式,即視圖模式。在普通模式下,還能夠按 x
/d
執行刪除、按 y
執行複製、按 gg
/G
/^
/$
跳轉至開頭/結尾/行首/行尾、按 u
/Ctrl
+r
執行撤銷/重作操做。
在 INSERT
模式下可以執行字符輸入操做,完成輸入後按 Esc
結束。在 VISUAL
模式下能夠移動光標進行文本選取,並進一步執行 d
/y
等完成刪除/複製等操做。在任何模式下,您均可以按 Esc
返回到普通模式,並請記住,vim
區分大小寫,所以時刻注意您的鍵盤狀態!
在使用 vim
編輯文檔和代碼時,請注意在普通模式和插入模式之間靈活切換,以將輸入操做碎片化,從而可以更靈活地執行撤銷與重作操做,由於 vim
將每次從進入插入模式開始,到按 Esc
回到普通模式的一整個過程認爲是一次插入操做。當編輯完成後,能夠鍵入 :wq
或 :x
來保存文件並退出 vim
。若是要丟棄修改,不保存而直接退出,能夠鍵入 :q!
。
vim
查找與替換
在普通模式下,按下鍵盤上的 /
鍵即進入查找模式,此時在底部會顯示鍵入信息,支持正則表達式,按下 Enter
完成鍵入並跳轉到查找到的高亮結果。如需暫時關閉高亮,請在底部命令模式下執行 nohl
命令。
vim
的替換命令更增強大。其基本格式爲 :[range]s/from/to/[flags]
,其中冒號表示進入底部命令模式,range
表示範圍(行),from
表示查找目標,能夠是正則表達式,to
表示替換成的字符串,flag
表示選項:g
-替換全部 / c
-替換前確認 / e
-忽略錯誤。例:
# 將每一行的全部 `Flag` 替換爲 `flag` :%s/Flag/flag/g # 將第6行的第一個 `int` 替換爲 `double` :6s/int/double/ # 將從第8行到倒數第5行的全部數字替換爲 `num` :8,$-4s/[0-9]\+/num/g # 將光標所在行的下一行的全部單詞刪除 :.+1s/[a-z|A-Z]\+//g
vim
多文件編輯
多窗口模式:在終端中鍵入 vim -o2 [xxx.cpp [yyy.cpp]]
可將視圖水平分割成上下兩個窗口,若參數使用大寫字母 O
則爲豎直分割。此外,在 vim
的普通模式下,鍵入 :split
可水平分割爲上下兩個窗口查看當前文件,或鍵入 :vsplit
豎直分割。固然,若 split
命令有參數,則嘗試打開文件。在多窗口狀態下,按下組合鍵 Ctrl
+w
激活窗口操做,此時可按 h
/j
/k
/l
切換窗口,並可按 r
/R
/x
/X
交換窗口位置。
多標籤模式:在終端中鍵入 vim -p2 [xxx.cpp [yyy.cpp]]
可激活 vim
的多標籤頁模式,或在 vim
中執行 :tabe [file.txt]
創建新的標籤頁(並在新標籤頁中打開文件 file.txt
)。在此狀態下,鍵入 gt
/gT
可順序/逆序遍歷標籤頁。
vimrc
資源文件
與 shell
相似,vim
在啓動時會載入一個資源文件,並分析執行資源文件中預約義的全部命令。這通常包括 vim
的個性化設置如視圖佈局和主題等,還會有一些 vim
插件的配置數據,有時咱們也會在其中編寫一些按鍵映射和函數定義,用以執行一些自動化操做,特別是編譯和運行程序。要配置一個適合於本身的 vimrc
文件,請移步相關教程和文檔,這裏不做贅述。
衆所周知,C語言程序調試分兩步走:碼代碼、跑程序,固然,這是由於中間一系列步驟都被各大 IDE 簡化了。即便如今,手裏握着 Linux 的咱們依舊能夠選擇使用 IDE,而且咱們也確實有許多優秀的候選項。不過這篇文章並不是介紹這些 IDEs for Linux,做爲開箱即用的軟件套件,它們幾乎不須要被介紹。即便您仍是但願選擇一個 IDE,最好也瞭解一下背後的過程。
簡單來講,C語言從代碼到目標程序的構建過程分爲預處理、編譯、彙編、連接四步,在沒有 IDE 幫助的情形下,咱們就須要手動完成這些操做。幸運的是,編譯器一般容許咱們忽略中間的具體步驟,直接從輸入源代碼到輸出目標程序。天然,咱們也能夠選擇輸出中間文件,這在不少狀況下每每十分必要。假如咱們如今已經擁有一個使用 vim
或其餘任何編輯器編寫的源代碼文件 hello.c
,咱們能夠在 shell
中使用 GCC 工具(GNU Compiler Collection)完成編譯操做:
# 若無 GCC 套件,先安裝 sudo apt install gcc sudo pacman -S gcc # 將 hello.c 編譯成目標程序(`-o` 選項可指定輸出文件名) gcc hello.c [-o hello.out] # 執行編譯輸出的可執行文件(參數) ./a.out [argument list] # 只進行到彙編,輸出 obj 文件 gcc -c hello.c [-o hello.o] # 只進行到編譯,輸出彙編代碼文件 gcc -S hello.c [-o hello.s] # 只做預處理,從標準輸出展現結果(可重定向到文件) gcc -E hello.c [> hello.txt] # 編譯過程當中產生調試信息 gcc -g hello.c # 顯示全部警告信息 gcc -Wall hello.c # 優化級別 [0-4] gcc -O2 hello.c # 更多用法請參考 `man gcc`
在進行大型項目、多文件的軟件開發過程當中,逐個編譯源文件是很是不明智的,這時候能夠考慮採用
makefile
自動化編譯過程,經過分析文件之間的依賴關係,確保全部文件保持最新,同時又不執行冗餘的操做。好比當某一個或多個文件更改時,沒必要從新處理全部源代碼,而只須要從新編譯修改的文件和引用它的文件。如您正有相關需求,請移步makefile
相關文檔。
到這裏,咱們已經完成了將源代碼構建爲目標程序的過程,若是編譯時加入了調試信息,那麼如今可使用 gdb
進行調試工做——儘管這也許會至關麻煩。咱們能夠經過 gdb -h
和 man gdb
命令來獲取它的參數和命令以及其餘介紹,這裏給出一個示例。
# 啓動 gdb (並打開目標程序) gdb [a.out]
gdb
相關命令:
(gdb) file a.out 載入可執行文件 (gdb) list 列出源代碼 (gdb) break 6 在第六行添加斷點 (gdb) run hello world argu3 argu4 運行待調試程序並給出參數列表 (gdb) print str 輸出當前變量 str 的值 (gdb) next 執行下一條語句,不進入函數 (gdb) step 執行下一條語句,進入函數內部 (gdb) display i 監視變量 i (gdb) continue 繼續運行,直到下一個斷點 (gdb) delete 1 刪除編號爲1的斷點 (gdb) delete display 1 刪除編號爲1的監視點 (gdb) kill 終止程序執行 (gdb) quit 退出調試器
暫停筆於此,若有謬誤,歡迎指正!