• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ubuntu下使用GDB断点Go程序

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

大家好,今天为大家带来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程序


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
知名nodeJS框架Express作者宣布弃nodeJS投Go发布时间:2022-07-10
下一篇:
(转)Go语言核心36讲之Go语言入门基础知识发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap