Ubuntu下使用GDB斷點Go程式

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

大家好,今天為大家帶來Ubuntu下,使用GDB斷點調試Go程式。由於之前沒有接觸過GDB調試,而Go語言本身內建也沒有什麼調試工具,不像 Eralng,有Debugger可以使用,我從網上搜尋了下,也沒有相關的中文教程,所以這邊自己研究了下,給新手帶來一篇關於GDB簡單調試Go程式 的文章。(關於GDB的文章還是不少的)

首先,編寫測試代碼,如下:

package main

import (
"fmt"
)

func main() {
fmt.Printf("%sn", "hello, world")

printNumber()
}

func printNumber() {
var count int;
count = 10

sum := 0

for i := 0; i < count; i++ {
sum = sum + i
fmt.Printf("i = %d, sum = %dn", i, sum)
}
}

編譯,並運行程式(Ubuntu下的Sublime Text 2,如果你也想用這個工具,可以參看我令一篇文章:Ubuntu下使用Sublime Text 2搭建Go開發環境):

go build main.go

  ./main

好了,現在我們就可以開始使用GDB調試,產生的main應用程式了,這裡為了快速找到應用程式,我把該程式和代碼放置到 ~/ 目錄下。

一,使用GDB載入應用程式,開啟終端,輸入 gdb main,如:

這裡注意最後兩行:

Reading symbols from /home/administrator/main…done.
Loading Go Runtime support.

讀取main程式完成和載入Go運行時。

二,輸入 l 命令,相當於list,從第一行開始列出源碼,如:

認真的朋友,會發現main.go代碼,並沒有完整的顯示在這裡,怎麼回事呢?

這裡我們直接再敲個斷行符號,就會產生如的結果:

還是不完整,再來個斷行符號呢?

現在已經完整了,如果再來個斷行符號呢?

這個時候,根據提示,我們就知道代碼已經全部顯示出來了。

三,設定斷點,並顯示斷點資訊:

輸入 break 8,表示在第8行,設定一個斷點。

輸入 break printNumber,表示在函數 printNumber 函數入口處,設定一個斷點,這裡沒有設定成功,需要輸入 break main.printNumber。感謝朋友JamCode和mikespook的協助。

輸入 break 14,表示在第14行,設定一個斷點。

輸入 info break,表示查看斷點資訊。

四,運行程式,並調試。

輸入 r,運行程式,run命令簡寫,程式將停止第8行斷點處,如:

使用 n,單條語句執行,next命令簡寫。

使用 c,繼續運行程式(跳過當前斷點),continue命令簡寫。

使用bt,查看函數堆棧。

使用finish,退出函數。

下面是我簡單調試的結果:

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.