今天學習了gcc編譯器和gdb除錯工具,初步接觸了shell指令碼
(1)gcc編譯器
整個編譯過程可以分為4個階段
1.預處理:本階段進行標頭檔案展開
2.編譯:檢查語法,翻譯成組合語言
3.彙編:把組合語言翻譯成機器語言
整個編譯過程為:gcc -e test.c -o test.i
gcc -s test.i -o test.s
gcc -c test.s -o test.o
gcc test.o -o test
接下來在命令視窗輸入:./test就可以編譯test.c程式了
(2)gdb除錯工具
在使用gdb除錯時,被除錯的應用程式最會使用-g引數將除錯資訊編入目標檔案中
gcc -g test.c -o test
此時在命令視窗輸入:gdb test就會進入gdb互動介面,在gdb互動介面也有一些常用指令:
list(l) 列出原始碼
break(b) 設定斷點
run(r) 從頭開始執行程式
continue(c) 從停止除繼續執行程式
next(n) 向前執行一句(不進入被呼叫函式)
step(s) 向前執行一句(可進入被呼叫函式)
return(r) 從當前函式返回
print(p
) 顯示變數或表示式的值
x 顯示記憶體值
quit(q) 退出gdb
(3)shell指令碼
固定格式:#!/bin/bash
執行指令碼時要先修改許可權,一般為 chmod 755 filename.sh
執行指令碼:./filename.shorsh filename.shorbash filename.sh
$符號:使其後的普通字元作為變數名,如$a表示變數a的值
#符號:注釋符
單引號:被引起的字元全部做普通字元,即全部原樣
雙引號:引號內的內容除$、轉義符\、倒引號`這三個保留特殊功能其他字元均做普通字元
倒引號:引號內的字串當做shell命令列解釋,執行得到的結果取代整個倒引號括起來的部分。
echo指令:$# 命令列引數個數
$* 輸出所有引數
$n 第n個引數
$0 當前程式名
for迴圈語句:
for 變數 in 列表 do
語句1語句2
........
done
case語句:
case 值 in
模式一) 語句1
語句2.........;;
模式二)
語句1語句2
.........;;
if判斷語句
if 條件
then
command
elif
then
command
else
command fi
Linux學習心得
一 首先我分享一下我對linux學習過程的幾篇部落格 1.通過反編譯乙個簡單的c程式,解釋堆疊的變化 2.乙個精簡的linux核心分析 3.跟蹤分析乙個簡單的linux核心的執行 4.分析乙個api的呼叫機制 5.分析linux核心建立乙個新程序的過程 6.linux核心如何裝載和啟動乙個可執行程式...
linux學習心得
在使用linux系統時,如要利用一些終端服務。都需要開啟linux中的相應伺服器。其中可以利用chkconfig list 或 chkconfig list more命令檢視服務是否起動。如檢視ftp服務 可用chkconfig list grep vsftpd 如果其狀態是關閉的,就要用chkco...
Linux學習心得
說起linux,就難免讓人想起windows 但反過來,談起windows,卻不一定會讓人想起linux,可見linux還有很長的一段路要走 基本上都會將linux與windows放到一起來比較,比如哪個系統操作更方便,哪個系統更加安全,哪個系統使用更加高效等等。拿桌面端來講,自然是windows系...