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

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

go語(yǔ)言如何用gdb調(diào)試 golang gdb調(diào)試

eclipse配置go?

1.下載go的windows下的安裝包:

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、永泰ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的永泰網(wǎng)站制作公司

也可以下載源代碼,用MinGW編譯。先配置好MinGW的環(huán)境,再運(yùn)行all.bat即可。

MingW:

2.下載gocode,用于go的補(bǔ)全提示:

gocode 的github地址:

要安裝git,在windows下,通常用msysgit。

再在cmd下安裝:

go get -u github點(diǎn)抗 /nsf/gocode

也可以下載代碼,直接用go build來(lái)編譯,會(huì)生成gocode.exe。

3.在eclipse中安裝插件:

4.配置插件:

(1).配置go的編譯器

(2).配置gocode(可選),這里我用的是eclipse插件自帶的gocode。

(3).配置gdb,做調(diào)試用(可選)

如果安裝了MingW,可以在安裝目錄下找到gdb。

5.測(cè)試是否成功

新建一個(gè)go工程,再建立一個(gè)hello.go。如下圖:

gdb調(diào)試如下(要在console中用輸入命令來(lái)調(diào)試):

6.其它

2012年3月31日:

目前這個(gè)eclipse插件,只能把代碼放在cmd包中才能運(yùn)行。

貌似現(xiàn)在流行的是Sublime Text2 + gocode。Sublime Text也的確比較好用。

======================

Eclipse平臺(tái)下配置Go語(yǔ)言開(kāi)發(fā)環(huán)境(Win7)

《Go語(yǔ)言編程》中寫(xiě)到:“從功能和易用性等方面考慮, Eclipse+GoEclipse、LiteIDE這兩個(gè)環(huán)境在所有IDE里面是表現(xiàn)最好的”,所以筆者打算采用Eclipse+GoEclipse開(kāi)發(fā)環(huán)境。

Eclipse平臺(tái)下配置Go語(yǔ)言開(kāi)發(fā)環(huán)境步驟:

1、安裝JDK和Eclipse

建議JDK1.6及以上版本。Eclipse3.6及以上版本。

2、安裝GoEclipse插件

在Eclipse中點(diǎn)擊菜單“Help”-》“Install New Software”打開(kāi)如下對(duì)話框,添加go插件的安裝地址:,

按提示一步一步操作即可,下載時(shí)可能會(huì)遇到網(wǎng)絡(luò)問(wèn)題,可使用goagent或其他代理。

3、安裝并配置Go的編譯器

下載地址:

下載時(shí)請(qǐng)注意版本,應(yīng)選擇windows-386的版本。

安裝完后重啟Eclipse,并通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”打開(kāi)Go語(yǔ)言的配置選項(xiàng)框。如下圖:

選擇Go的安裝路徑即可,如筆者的安裝路徑是F:\Work\Go

4、配置調(diào)試器(可選)

需要先安裝MinGW,下載地址:

安裝完之后,通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”-》“Debugger”打開(kāi)調(diào)試器的配置選項(xiàng)框。

將GDB路徑配置為:MinGW安裝目錄下的gdb.exe文件即可。

5、配置代碼自動(dòng)補(bǔ)全(可選)

需要配置gocode,可使用goEclipse插件自帶的版本,也可以自己下載:

筆者使用的是goEclipse插件自帶的版本,配置方式如下:

通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”-》“Gocode”打開(kāi)配置選項(xiàng)框。

將Gocode的路徑配置為:goEclipse的安裝路徑下的gocode.exe文件,如

F:\Work\eclipse\plugins\com.googlecode.goclipse.gocode_0.7.6.v450\tools\windows_386\gocode.exe

6、配置支持Import遠(yuǎn)程包(可選)

為了支持Import遠(yuǎn)程包,最好裝個(gè)gowin-env。下載地址:。 如果下的是壓縮包,請(qǐng)把它解壓到C盤(pán)。例如,C:\gowin-env。里面有個(gè)Console.bat是以后使用go get的環(huán)境。舉例:有個(gè)文件a.go,里面import?(

"fmt"

"github點(diǎn)抗 /astaxie/beedb"

_?"github點(diǎn)抗 /ziutek/mymysql/godrv"

為了編譯該a.go文件,需要啟動(dòng)Console.bat,然后在該命令行窗口,進(jìn)入c:\go\src目錄下,執(zhí)行g(shù)o getgithub點(diǎn)抗 /astaxie/beedb

Go get github點(diǎn)抗 /ziutek/mymysql/godrv .

Go?會(huì)自動(dòng)下載該遠(yuǎn)程包并編譯和安裝這些包。

7、go install: no install location for directory *** outside GOPATH錯(cuò)誤的處理

由于每一個(gè)Go程序都必須包含一個(gè)main包以及一個(gè)main()函數(shù),因此如果沒(méi)有main包就會(huì)導(dǎo)致上述錯(cuò)誤。

What Doesn't Kill Me Makes Me Stronger

如何用GDB進(jìn)行調(diào)試

1: 對(duì)于在應(yīng)用程序中加入?yún)?shù)進(jìn)行調(diào)試的方法:

直接用 gdb app -p1 -p2 這樣進(jìn)行調(diào)試是不行的。

需要像以下這樣使用:

#gdb app

(gdb) r -p1 -p2

或者在運(yùn)行run命令前使用set args命令:

(gdb) set args p1 p2

可以用show args 命令來(lái)查看

2. 加入斷點(diǎn):

break linenumber

break funcName

break +offset

break -offset

(在當(dāng)前行號(hào)的前面或后面的offset行停住。)

break filename:linenum

在源文件filename的linenum行處停住。

break filename:function

在源文件filename的function函數(shù)的入口處停住。

break ... if

...可以是上述的參數(shù),condition表示條件,在條件成立時(shí)停住。比如在循環(huán)境體中,可以設(shè)置 break if i=100,表示當(dāng)i為100時(shí)停住程序。

3. 查看運(yùn)行時(shí)的堆棧:

使用bt命令

4. 打印某個(gè)變量的值:

print val

5. 單步: n

繼續(xù)運(yùn)行: c

step

單步跟蹤,如果有函數(shù)調(diào)用,他會(huì)進(jìn)入該函數(shù)。

next

同樣單步跟蹤,如果有函數(shù)調(diào)用,他不會(huì)進(jìn)入該函數(shù)。很像VC等工具中的step over。后面可以加count也可以不加,不加表示一條條地執(zhí)行,加表示執(zhí)行后面的count條指令,然后再停住。

set step-mode

set step-mode on

打開(kāi)step-mode模式,于是,在進(jìn)行單步跟蹤時(shí),程序不會(huì)因?yàn)闆](méi)有debug信息而不停住。這個(gè)參數(shù)有很利于查看機(jī)器碼。

set step-mod off

關(guān)閉step-mode模式。

finish

運(yùn)行程序,直到當(dāng)前函數(shù)完成返回。并打印函數(shù)返回時(shí)的堆棧地址和返回值及參數(shù)值等信息。

until 或 u

當(dāng)你厭倦了在一個(gè)循環(huán)體內(nèi)單步跟蹤時(shí),這個(gè)命令可以運(yùn)行程序直到退出循環(huán)體。

6.在GDB中執(zhí)行shell命令:

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

 eg. shell make

7. 運(yùn)行環(huán)境

可設(shè)定程序的運(yùn)行路徑。

show paths 查看程序的運(yùn)行路徑。

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

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

8.觀察點(diǎn)(WatchPoint)

觀察點(diǎn)一般來(lái)觀察某個(gè)表達(dá)式(變量也是一種表達(dá)式)的值是否有變化了,如果有變化,馬上停住程 序。我們有下面的幾種方法來(lái)設(shè)置觀察點(diǎn):

watch

為表達(dá)式(變量)expr設(shè)置一個(gè)觀察點(diǎn)。一量表達(dá)式值有變化時(shí),馬上停住程序。

rwatch

當(dāng)表達(dá)式(變量)expr被讀時(shí),停住程序。

awatch

當(dāng)表達(dá)式(變量)的值被讀或被寫(xiě)時(shí),停住程序。

info watchpoints

列出當(dāng)前所設(shè)置了的所有觀察點(diǎn)。

9. 維護(hù)breakpoint

clear

清除所有的已定義的停止點(diǎn)。

clear func

清除所有設(shè)置在函數(shù)上的停止點(diǎn)。

delete [breakpoints] [range...]

刪除指定的斷點(diǎn),breakpoints為斷點(diǎn)號(hào)。如果不指定斷點(diǎn)號(hào),則表示刪除所有的斷點(diǎn)。range 表示斷點(diǎn)號(hào)的范圍(如:3-7)。其簡(jiǎn)寫(xiě)命令為d。

比刪除更好的一種方法是disable停止點(diǎn),disable了的停止點(diǎn),GDB不會(huì)刪除,當(dāng)你還需要時(shí),enable即可,就好像回收站一樣。

disable [breakpoints] [range...]

disable所指定的停止點(diǎn),breakpoints為停止點(diǎn)號(hào)。如果什么都不指定,表示disable所有的停止 點(diǎn)。簡(jiǎn)寫(xiě)命令是dis.

enable [breakpoints] [range...]

enable所指定的停止點(diǎn),breakpoints為停止點(diǎn)號(hào)。

10、程序變量

查看文件中某變量的值:

file::variable

function::variable

可以通過(guò)這種形式指定你所想查看的變量,是哪個(gè)文件中的或是哪個(gè)函數(shù)中的。例如,查看文件f2.c中的全局變量x的值:

gdb) p 'f2.c'::x

查看數(shù)組的值

有時(shí)候,你需要查看一段連續(xù)的內(nèi)存空間的值。比如數(shù)組的一段,或是動(dòng)態(tài)分配的數(shù)據(jù)的大小。你可以使用GDB的“@”操作符,“@”的左邊是第一個(gè)內(nèi)存的地址的值,“@”的右邊則你你想查看內(nèi)存的長(zhǎng)度。例如,你的程序中有這樣的語(yǔ)句:

int *array = (int *) malloc (len * sizeof (int));

于是,在GDB調(diào)試過(guò)程中,你可以以如下命令顯示出這個(gè)動(dòng)態(tài)數(shù)組的取值:

p *array@len

如果是靜態(tài)數(shù)組的話,可以直接用print數(shù)組名,就可以顯示數(shù)組中所有數(shù)據(jù)的內(nèi)容了。

11.輸出格式

一般來(lái)說(shuō),GDB會(huì)根據(jù)變量的類型輸出變量的值。但你也可以自定義GDB的輸出的格式。例如,你想輸出一個(gè)整數(shù)的十六進(jìn)制,或是二進(jìn)制來(lái)查看這個(gè)整型變量的中的位的情況。要做到這樣,你可以使用GDB的數(shù)據(jù)顯示格式:

x 按十六進(jìn)制格式顯示變量。

d 按十進(jìn)制格式顯示變量。

u 按十六進(jìn)制格式顯示無(wú)符號(hào)整型。

o 按八進(jìn)制格式顯示變量。

t 按二進(jìn)制格式顯示變量。

a 按十六進(jìn)制格式顯示變量。

c 按字符格式顯示變量。

f 按浮點(diǎn)數(shù)格式顯示變量。

(gdb) p i

$21 = 101

(gdb) p/a i

$22 = 0x65

(gdb) p/c i

$23 = 101 'e'

(gdb) p/f i

$24 = 1.41531145e-43

(gdb) p/x i

$25 = 0x65

(gdb) p/t i

$26 = 1100101

11.查看內(nèi)存

使用examine命令(簡(jiǎn)寫(xiě)是x)來(lái)查看內(nèi)存地址中的值。x命令的語(yǔ)法如下所示:

x/

n、f、u是可選的參數(shù)。

n 是一個(gè)正整數(shù),表示顯示內(nèi)存的長(zhǎng)度,也就是說(shuō)從當(dāng)前地址向后顯示幾個(gè)地址的內(nèi)容。

f 表示顯示的格式,參見(jiàn)上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。

u 表示從當(dāng)前地址往后請(qǐng)求的字節(jié)數(shù),如果不指定的話,GDB默認(rèn)是4個(gè)bytes。u參數(shù)可以用下面的字符來(lái)代替,b表示單字節(jié),h表示雙字節(jié),w表示四字節(jié),g表示八字節(jié)。當(dāng)我們指定了字節(jié)長(zhǎng)度后,GDB會(huì)從指內(nèi)存定的內(nèi)存地址開(kāi)始,讀寫(xiě)指定字節(jié),并把其當(dāng)作一個(gè)值取出來(lái)。

n/f/u三個(gè)參數(shù)可以一起使用。例如:

命令:x/3uh 0x54320 表示,從內(nèi)存地址0x54320讀取內(nèi)容,h表示以雙字節(jié)為一個(gè)單位,3表示三個(gè)單位,u表示按十六進(jìn)制顯示。

12.自動(dòng)顯示

你可以設(shè)置一些自動(dòng)顯示的變量,當(dāng)程序停住時(shí),或是在你單步跟蹤時(shí),這些變量會(huì)自動(dòng)顯示。相關(guān)的GDB命令是display。

display

display/

display/ expr

expr是一個(gè)表達(dá)式,fmt表示顯示的格式,addr表示內(nèi)存地址,當(dāng)你用display設(shè)定好了一個(gè)或多個(gè)表達(dá)式后,只要你的程序被停下來(lái),GDB會(huì)自動(dòng)顯示你所設(shè)置的這些表達(dá)式的值。

格式i和s同樣被display支持,一個(gè)非常有用的命令是:

display/i $pc

undisplay

delete display

刪除自動(dòng)顯示,dnums意為所設(shè)置好了的自動(dòng)顯式的編號(hào)。

disable display

enable display

disable和enalbe不刪除自動(dòng)顯示的設(shè)置,而只是讓其失效和恢復(fù)。

info display

查看display設(shè)置的自動(dòng)顯示的信息。GDB會(huì)打出一張表格,向你報(bào)告當(dāng)然調(diào)試中設(shè)置了多少個(gè)自動(dòng)顯示設(shè)置,其中包括,設(shè)置的編號(hào),表達(dá)式,是否enable。

13. 設(shè)置顯示選項(xiàng)

set print address

set print address on

打開(kāi)地址輸出,當(dāng)程序顯示函數(shù)信息時(shí),GDB會(huì)顯出函數(shù)的參數(shù)地址。系統(tǒng)默認(rèn)為打開(kāi)的,

show print address

查看當(dāng)前地址顯示選項(xiàng)是否打開(kāi)。

set print array

set print array on

打開(kāi)數(shù)組顯示,打開(kāi)后當(dāng)數(shù)組顯示時(shí),每個(gè)元素占一行,如果不打開(kāi)的話,每個(gè)元素則以逗號(hào)分隔。這個(gè)選項(xiàng)默認(rèn)是關(guān)閉的。與之相關(guān)的兩個(gè)命令如下,我就不再多說(shuō)了。

set print array off

show print array

set print elements

這個(gè)選項(xiàng)主要是設(shè)置數(shù)組的,如果你的數(shù)組太大了,那么就可以指定一個(gè)來(lái)指定數(shù)據(jù)顯示的最大長(zhǎng)度,當(dāng)?shù)竭_(dá)這個(gè)長(zhǎng)度時(shí),GDB就不再往下顯示了。如果設(shè)置為0,則表示不限制。

show print elements

查看print elements的選項(xiàng)信息。

set print null-stop

如果打開(kāi)了這個(gè)選項(xiàng),那么當(dāng)顯示字符串時(shí),遇到結(jié)束符則停止顯示。這個(gè)選項(xiàng)默認(rèn)為off。

set print pretty on

如果打開(kāi)printf pretty這個(gè)選項(xiàng),那么當(dāng)GDB顯示結(jié)構(gòu)體時(shí)會(huì)比較漂亮。

14.關(guān)于顯示源碼list

怎樣用GDB調(diào)試一個(gè)由腳本文件啟動(dòng)的程序

使用GDB

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

$gcc -g -Wall hello.c -o hello

$g++ -g -Wall hello.cpp -o hello

如果沒(méi)有-g,你將看不見(jiàn)程序的函數(shù)名、變量名,所代替的全是運(yùn)行時(shí)的內(nèi)存地址。當(dāng)你用-g把調(diào)試信息加入之后,并成功編譯目標(biāo)代碼以后,讓我們來(lái)看看如何用gdb來(lái)調(diào)試他。

啟動(dòng)GDB的方法有以下幾種:

gdb program

program也就是你的執(zhí)行文件,一般在當(dāng)前目錄下。

gdb program core

用gdb同時(shí)調(diào)試一個(gè)運(yùn)行程序和core文件,core是程序非法執(zhí)行后core dump后產(chǎn)生的文件。

gdb program PID

如果你的程序是一個(gè)服務(wù)程序,那么你可以指定這個(gè)服務(wù)程序運(yùn)行時(shí)的進(jìn)程ID。gdb會(huì)自動(dòng)attach上去,并調(diào)試他。program應(yīng)該在PATH環(huán)境變量中搜索得到。

以上三種都是進(jìn)入gdb環(huán)境和加載被調(diào)試程序同時(shí)進(jìn)行的。也可以先進(jìn)入gdb環(huán)境,在加載被調(diào)試程序,方法如下:

*在終端輸入:gdb

*在gdb環(huán)境中:file program

這兩步等價(jià)于:gdb program

GDB啟動(dòng)時(shí),可以加上一些GDB的啟動(dòng)開(kāi)關(guān),詳細(xì)的開(kāi)關(guān)可以用gdb -help查看。我在下面只例舉一些比較常用的參數(shù):

-symbols file

-s file

從指定文件中讀取符號(hào)表。

-se file

從指定文件中讀取符號(hào)表信息,并把他用在可執(zhí)行文件中。

-core file

-c file

調(diào)試時(shí)core dump的core文件。

-directory directory

-d directory

加入一個(gè)源文件的搜索路徑。默認(rèn)搜索路徑是環(huán)境變量中PATH所定義的路徑。

osx10.11 怎么安裝 gdb

LiteIDE調(diào)試Go語(yǔ)言需要安裝GDB

1.先解決brew不能使用的問(wèn)題

cd /usr/local/Library

git pull origin master

brew update

brew prune

brew doctor

參考:

2.用Homebrew 安裝 gdb

(1)

# brew tap homebrew/dupes

(2)

# brew install gdb

(3)有可能提示:

Warning: No developer tools installed.

You should install the Command Line Tools.

Run `xcode-select --install` to install them.

那就先安裝the Command Line Tools.

# xcode-select --install

3.給gdb制作證書(shū)并授權(quán):

如果沒(méi)有證書(shū),會(huì)出現(xiàn)如下提示:

(gdb) run

Starting program: /Users/wenke/go/src/gdb/main

Unable to find Mach task port for process-id 18420: (os/kern) failure (0x5).

(please check gdb is codesigned - see taskgated(8))


網(wǎng)頁(yè)標(biāo)題:go語(yǔ)言如何用gdb調(diào)試 golang gdb調(diào)試
本文來(lái)源:http://weahome.cn/article/ddehoej.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部