真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux自定義命令調試 linux shell 調試

linux里面如何單步調試!

一、GDB 概述

成都創(chuàng)新互聯(lián)2013年開創(chuàng)至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目做網(wǎng)站、成都網(wǎng)站建設網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元連平做網(wǎng)站,已為上家服務,為連平各地企業(yè)和個人服務,聯(lián)系電話:18982081108

GDB 是 GNU 開源組織發(fā)布的一個強大的 UNIX 下的程序調試工具?;蛟S,各位比較喜歡那種圖形界面方式的,像 VC 、 BCB 等 IDE 的調試,但如果你是在 UNIX 平臺下做軟件,你會發(fā)現(xiàn) GDB 這個調試工具有比 VC 、 BCB 的圖形化調試器更強大的功能。所謂 “ 寸有所長,尺有所短 ” 就是這個道理。

一般來說, GDB 主要幫忙你完成下面四個方面的功能:

1 、啟動你的程序,可以按照你的自定義的要求隨心所欲的運行程序。

2 、可讓被調試的程序在你所指定的調置的斷點處停住。(斷點可以是條件表達式)

3 、當程序被停住時,可以檢查此時你的程序中所發(fā)生的事。

4 、動態(tài)的改變你程序的執(zhí)行環(huán)境。

從上面看來, GDB 和一般的調試工具沒有什么兩樣,基本上也是完成這些功能,不過在細節(jié)上,你會發(fā)現(xiàn) GDB 這個調試工具的強大,大家可能比較習慣了圖形化的調試工具,但有時候,命令行的調試工具卻有著圖形化工具所不能完成的功能。讓我們一一看來。

二、一個調試示例

源程序: tst.c

[cpp] view plain copy

#include stdio.h

int func(int n)

{

int sum=0,i;

for(i=0; in; i++)

{

sum+=i;

}

return sum;

}

int main()

{

int i;

long result = 0;

for(i=1; i=100; i++)

{

result += i;

}

printf("result[1-100] = %d /n", result );

printf("result[1-250] = %d /n", func(250) );

}

編譯生成執(zhí)行文件:( Linux 下)

hchen/test cc -g tst.c -o tst

啟動Gdb:

以上是對于gdb的感性認識,接下來系統(tǒng)地認識一下 gdb 吧。

三、使用 GDB

1.基礎

一般來說 GDB 主要調試的是 C/C++ 的程序。要調試 C/C++ 的程序,首先在編譯時,我們必須要把調試信息加到可執(zhí)行文件中。使用編譯器( cc/gcc/g++ )的 -g 參數(shù)可以做到這一點。如:

cc -g hello.c -o hello

g++ -g hello.cpp -o hello

如果沒有 -g ,你將看不見程序的函數(shù)名、變量名,所代替的全是運行時的內存地址。當你用 -g 把調試信息加入之后,并成功編譯目標代碼以后,讓我們來看看如何用 gdb 來調試他。

啟動 gdb 后,就你被帶入 gdb 的調試環(huán)境中,就可以使用 gdb 的命令開始調試程序了, gdb 的命令可以使用 help 命令來查看,

gdb 的命令很多, gdb 把之分成許多個種類。 help 命令只是例出 gdb 的命令種類,如果要看種類中的命令,可以使用 help class 命令,如: help breakpoints ,查看設置斷點的所有命令。也可以直接 help command 來查看命令的幫助。如下圖所示:

要退出 gdb 時,只用發(fā) quit 或命令簡稱 q 就行了。

2 GDB 中運行 UNIX 的 shell 程序

在 gdb 環(huán)境中,你可以執(zhí)行 UNIX 的 shell 的命令,使用 gdb 的 shell 命令來完成:

shell command string

調用 UNIX 的 shell 來執(zhí)行 command string ,環(huán)境變量 SHELL 中定義的 UNIX 的 shell 將會被用來執(zhí)行 command string ,如果 SHELL 沒有定義,那就使用 UNIX 的標準 shell : /bin/sh 。(在 Windows 中使用 Command.com 或 cmd.exe )

還有一個 gdb 命令是 make :

make make-args

可以在 gdb 中執(zhí)行 make 命令來重新 build 自己的程序。這個命令等價于 “ shell make make-args ”

3 在 GDB 中運行程序

在 gdb 中,運行程序使用 r 或是 run 命令。程序的運行,你有可能需要設置下面四方面的事。

1 、程序運行參數(shù)。

set args 可指定運行時參數(shù)。(如: set args 10 20 30 40 50 )

show args 命令可以查看設置好的運行參數(shù)。

2 、運行環(huán)境。

path dir 可設定程序的運行路徑。

show paths 查看程序的運行路徑。

set environment varname [=value] 設置環(huán)境變量。如: set env USER=hchen

show environment [varname] 查看環(huán)境變量。

3 、工作目錄。

cd dir 相當于 shell 的 cd 命令。

pwd 顯示當前的所在目錄。

4 、程序的輸入輸出。

info terminal 顯示你程序用到的終端的模式。

使用重定向控制程序輸出。如: run outfile

tty 命令可以指寫輸入輸出的終端設備。如: tty /dev/ttyb

如何創(chuàng)建linux命令”快捷方式”或”自定義

1、可以使為命令設置別名alias來建立快捷鍵。

上面是root賬號下當前設置,下面的例子是為ls建立'll'別名:

在命令行輸入:alias ll="ls?-l"

這個會在機器重啟后丟失

2、建立永久快捷鍵

參照上面的圖示編輯用戶目錄下的.bashrc文件,添加一行:alias ll="ls?-l" 保存退出

然后用source ~/.bashrc(或者 . ~/.bashrc)使修改立刻生效。

怎么在linux系統(tǒng)下調試程序

(1)假設要debug的進程號為1000,運行如下命令:

$ gdb -p 1000

使用此命令即可使gdb附加到進程。

(2)載入libpython腳本

如果你的gdb是redhat或fedora等廠商修改過的,會有--python選項,使用此選項即可指定gdb啟動時載入的Python擴展腳本(此腳本是擴展gdb的,不是我們需要debug的腳本)。

$ gdb --python /path/to/libpython .py -p 1000

如果安裝的是GNU的gdb,就需要打開gdb后手動載入libpython.py腳本

(gdb) python

import sys

sys.path.insert(0, '/path/to/libpython.py' )

import libpython

end

(gdb)

這時就可以使用py-bt命令打印當前線程的Python traceback了。libpython還提供很多命令,例如py-print打印變量,py-locals打印所有本地變量等等,詳細可打開libpython.py查看。

linux 如何自定義命令函數(shù)?

你是想問在shell(比如說bash)下如何定義一個函數(shù)cuts嗎?

如果是bash,那么就直接在shell 下輸入以下內容

function cuts () {

echo "Hello world"

}

然后就可以在當前終端下調用cuts了,比如

$ cuts

Hello world

如果你是想在某個腳本中調用函數(shù)cuts,那么只要把上面那段代碼加入腳本中,也就可以用了,比如

#!/bin/bash

function cuts ()

{

echo "Hello world"

}

....

cuts

....


網(wǎng)站標題:linux自定義命令調試 linux shell 調試
文章轉載:http://weahome.cn/article/hhgdcc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部