分享
  1. 首页
  2. 文章

Ubuntu下使用GDB断点Go程序

yourihua · · 2927 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

大家好,今天为大家带来Ubuntu下,使用GDB断点调试Go程序。由于之前没有接触过GDB调试,而Go语言本身内置也没有什么调试工具,不像Eralng,有Debugger可以使用,我从网上搜索了下,也没有相关的中文教程,所以这边自己研究了下,给新手带来一篇关于GDB简单调试Go程序的文章。(关于GDB的文章还是不少的)

首先,编写测试代码,如下:

package main
import (
 "fmt"
)
func main() {
 fmt.Printf("%s\n", "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 = %d\n", 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,退出函数

下面是我简单调试的结果:

这里最后还有个疑问,当我使用 p,输出 count,和 sum 值的时候,它的值很奇怪,麻烦知道的朋友留言告知,谢谢。


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:yourihua

查看原文:Ubuntu下使用GDB断点Go程序

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
2927 次点击
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏