最簡(jiǎn)單的調(diào)試命令當(dāng)然是使用echo命令。您可以使用echo在任何懷疑出錯(cuò)的地方打印任何變量值。這也是絕大多數(shù)的shell程序員要花費(fèi)80%的時(shí)間來(lái)調(diào)試程序的原因。Shell程序的好處在于不需要重新編譯,插入一個(gè)echo命令也不需要多少時(shí)間。
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元大渡口做網(wǎng)站,已為上家服務(wù),為大渡口各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
shell也有一個(gè)真實(shí)的調(diào)試模式。如果在腳本"strangescript" 中有錯(cuò)誤,您可以這樣來(lái)進(jìn)行調(diào)試:
sh -x strangescript
這將執(zhí)行該腳本并顯示所有變量的值。
shell還有一個(gè)不需要執(zhí)行腳本只是檢查語(yǔ)法的模式。可以這樣使用:
sh -n your_script
這將返回所有語(yǔ)法錯(cuò)誤。
linux/unix shell l腳本調(diào)試方法
Shell提供了一些用于調(diào)試腳本的選項(xiàng),如下所示:
-n
讀一遍腳本中的命令但不執(zhí)行,用于檢查腳本中的語(yǔ)法錯(cuò)誤
-v
一邊執(zhí)行腳本,一邊將執(zhí)行過(guò)的腳本命令打印到標(biāo)準(zhǔn)錯(cuò)誤輸出
-x
提供跟蹤執(zhí)行信息,將執(zhí)行的每一條命令和結(jié)果依次打印出來(lái)
使用這些選項(xiàng)有三種方法,一是在命令行提供參數(shù)
$ sh -x ./script.sh二是在腳本開(kāi)頭提供參數(shù)
#! /bin/sh -x第三種方法是在腳本中用set命令啟用或禁用參數(shù)
#! /bin/sh
if [ -z "$1" ]; then
set -x
echo "ERROR: Insufficient Args."
exit 1
set +x
fiset -x和set +x分別表示啟用和禁用-x參數(shù),這樣可以只對(duì)腳本中的某一段進(jìn)行跟蹤調(diào)試。
Gdb調(diào)試
注意:在Gcc編譯選項(xiàng)中一定要加入
–g
退出GDB:quit
或
Ctrl+d
調(diào)試過(guò)程:
1.
查看文件
命令:
(gdb)
l
命令:(gdb)
b
行號(hào)
注:到第17行停止,并沒(méi)有執(zhí)行17行
3.
查看斷點(diǎn)情況
info
b
4.
運(yùn)行代碼
r
命令:
(gdb)
r
(也可以指定行開(kāi)始運(yùn)行,在r后面加上行號(hào))
5.
查看變量值
p
命令:(gdb)
p
變量名
6.
設(shè)置監(jiān)視點(diǎn):
watch
z
(變量名)
也可以是復(fù)雜的表達(dá)式
7.
單步運(yùn)行
命令:(gdb)
n
(逐過(guò)程)
8.逐步,會(huì)進(jìn)入函數(shù)
命令:(gdb)
s
9.條件斷點(diǎn)
將正常斷點(diǎn)轉(zhuǎn)變?yōu)闂l件斷點(diǎn):condition
如:condition
1
i
==
10
只有當(dāng)滿足條件i
==
1時(shí),才會(huì)在斷點(diǎn)1處暫停
10.
恢復(fù)程序運(yùn)行
c
命令:
(gdb)
c
(程序就會(huì)運(yùn)行,如果沒(méi)有斷點(diǎn),就運(yùn)行剩下部分,如果有斷點(diǎn),就會(huì)運(yùn)行到下一個(gè)斷點(diǎn))
11.
去除斷點(diǎn)
clear
line_number
clear
filename:line_number
12.
help
12.1
help找出類別
12.2help從列表中
根據(jù)這些可以查看系統(tǒng)調(diào)用的完整性,比如說(shuō)服務(wù)器連接數(shù)一直漲,說(shuō)明fd沒(méi)有close,close調(diào)用在上邊有缺失
strace -t -T -v -f -p 16705 -Te write 只看write系統(tǒng)調(diào)用
sudo gcore xxpid 生成dump文件
sudo dlv core binfile core.xxxx 調(diào)試coredump文件,查看調(diào)用棧、goroutines
查看系統(tǒng)級(jí)別日志 /var/log/messages
messages 日志是核心系統(tǒng)日志文件。它包含了系統(tǒng)啟動(dòng)時(shí)的引導(dǎo)消息,以及系統(tǒng)運(yùn)行時(shí)的其他狀態(tài)消息。IO 錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤和其他系統(tǒng)錯(cuò)誤都會(huì)記錄到這個(gè)文件中。其他信息,比如某個(gè)人的身份切換為 root,也在這里列出。如果服務(wù)正在運(yùn)行,比如 DHCP 服務(wù)器,您可以在 messages 文件中觀察它的活動(dòng)。通常,/var/log/messages 是您在做故障診斷時(shí)首先要查看的文件。
tcpdump -i lo -nnA 'port 7076' and 'tcp[13] 4 != 0 ' 抓rst包,發(fā)送給7076端口或者是7076端口發(fā)出去的
mac osx系統(tǒng):sudo tcpdump -i lo0 -nnA 'port 3000'
只需要在linux的命令行下執(zhí)行: matlab -nodesktop -nosplash -r “你的程序的名字” (前提是matlab所在的目錄在你的PATH變量包含的目錄中)
網(wǎng)站名稱:linux命令行調(diào)試代碼 linux命令行編程
本文網(wǎng)址:http://aaarwkj.com/article28/hhhpjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、做網(wǎng)站、軟件開(kāi)發(fā)、App設(shè)計(jì)、品牌網(wǎng)站建設(shè)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容