Ubuntu下使用GDB斷點Go程式

2021-09-08 14:28:58 字數 1878 閱讀 6287

首先,編寫測試**,如下:

package main

import (

"fmt")

func main()

func printnumber()

}

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

好了,現在我們就可以開始使用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,退出函式。

下面是我簡單除錯的結果:

ROS使用gdb除錯斷點

我目前沒有使用roslaunch 通過修改 launch prefix xterm e gdb ex run args 獲得成功。我使用gdb去啟動orb slam節點。在 catkin ws devel lib orb slam下,終端開啟輸入 gdb orb slam雖然我會提示 reading...

linux 下g 和 gdb的使用總結

用gdb編譯程式時,首先在編譯程式時加 g gcc g test.c o test 執行方法有兩種 gdb test 或者gdb file test gdb 可以做什麼?1 gdb 可以以除錯模式啟動程式。2 gdb 可以 attach 到正在執行的程序 3 gdb 可以分析 core 檔案中的資訊...

GDB工具如何使用斷點資訊

在linux平台下,使用最多的就是除錯工具gdb.通過命令gcc g test.c 缺省會生成a.out檔案,這個檔案由於引數 g的原因加入了除錯資訊。所以可以使用gdb來載入並除錯,但是在使用斷點的時候,你會很鬱悶。真的。比如下面先來看這個過程。test.c 1 include 2 3 void ...