Linux 新手入門教程
1991年10月5日,Linus Torvalds 在互聯網上發布訊息,宣布他自己開發的內核系統誕生了,他將內核源代碼保存在芬蘭最大的 FTP 網站上,命名為 Linux,取義 Linus's Minix,并向全世界所有人公布,這也使得10月5日成為一個特殊的日子,以致之后的許多 Linux 版本都選擇在這個日子發布,當然,如今的 Linux 一詞被遞回定義為 Linux is not Unix,
簡介
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 擁有豐富的桌面環境以供選取,盡管桌面環境可能有風格迥異的設計,但大體上都應包括登錄管理器、視窗管理器、應用啟動器等組件,可能還包括一套開箱即用的軟體套件,如編輯器、瀏覽器和終端模擬器等,大部分情況下,在使用桌面發行版的安裝鏡像正確安裝系統后,桌面環境都已經預裝并正常作業了,
Linux 的安裝
這里以 Manjaro 作業系統為例,簡要說明系統安裝步驟
-
從 Manjaro 官網 的下載頁面選擇合適的版本并將
iso鏡像檔案下載到本地(以 KDE 版本為例), -
如果使用虛擬機,則此時新建一個虛擬機,將剛才下載的
iso鏡像裝載到虛擬機上啟動;若要通過U盤安裝到本地機器,則可用 Rufus 軟體載入鏡像并以DD模式寫入U盤,然后重啟計算機,注意正確設定 BIOS 以從U盤啟動, -
在 Manjaro 的啟動頁面進行相關設定,若在接下來的步驟中出現驅動問題,可重回此步并將
driver項設為non-free, -
進入
live系統后,啟動安裝程式,按照提示配置好各項引數,最后點擊安裝即可, -
安裝完成后,重啟計算機并移除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 有運行級別的概念,目前來說定義了七種運行級別:
- 0 停機狀態
- 1 單用戶模式
- 2 多用戶模式(無 NFS)
- 3 完全多用戶模式
- 4 保留
- 5 X11 圖形服務器模式
- 6 重啟狀態
這些運行級別分別對應著不同的服務組,這些服務項在開機時由 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 [email protected]
# 或用 -l 指定用戶名
ssh 192.168.1.2 -l dog
# 使用 -p 指定連接埠
ssh [email protected] -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 [email protected]:.
# 從遠程主機復制整個目錄到本地,并指定埠
scp -r -P 22 dog:./minecraft .
在計算機集群配置程序中,有時可能也會用到
ssh-keyscan命令來大規模收集集群內所有主機資訊,并將這些資訊復制到各機器目錄下,以實作集群內任意兩臺機器之間都能夠無密碼互訪,ssh還可以用于從內網主機連接到公網主機并建立隧道,從而實作內網穿透的功能,而為了確保連接的持續性,一般會使用擁有自動重連功能的autossh代替ssh,有時,您也可以從客戶端經由主機A連接到主機B——如果有必要的話,另外,您還可以使用sshfs命令來掛載遠程檔案系統,這與 NFS 相似,相關命令使用方法請參閱 SSH 手冊頁和相關檔案,
Linux 檔案系統權限
對于任意一個目錄,執行 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*
編輯器之神:VIM
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檔案,請移步相關教程和檔案,這里不作贅述,
使用 Linux 溜起 C/C++
眾所周知,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
退出除錯器
暫圖示于此,如有謬誤,歡迎指正!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/163594.html
標籤:Linux
下一篇:rhel7下安裝EPEL源
