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

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

package mainimport ("fmt"
)func main() {fmt.Printf("%s\n", "hello, world")printNumber()
}func printNumber() {var count int;count = 10sum := 0for i := 0; i < count; i++ {sum = sum + ifmt.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程序

Ubuntu下使用GDB断点Go程序相关推荐

  1. linux下qt多个程序打包,解决Ubuntu下使用linuxdeployqt打包Qt程序问题

    写了点Qt界面程序,然而发现很难移植到其他没有安装Qt环境的电脑上运行.查资料了解到,在windows上有windowsdeployqt程序,linux上有linuxdeployqt可以帮助我们快速打 ...

  2. ubuntu下链接手机调试android程序,ADB无法识别手机

    ubuntu下链接手机调试android程序,ADB无法识别手机 摘要: 最近刚开始接触android开发,用的ubuntu系统,结果无奈,用模拟机开发总是会各种无法真实模拟,而且有些程序也无法测试, ...

  3. ubuntu下使用vscode开发golang程序,从控制台到简单web程序

    最近项目要使用go语言开发一个web程序,由于是第一次使用go开发,就将开发过程中的点滴做个记录吧. 目录 1.安装go 1.1 安装 1.2 配置go语言环境变量 2.vscode配置go开发 2. ...

  4. 向大家推荐Ubuntu下九大最佳绘图程序

    ubuntu系统是以桌面应用为主的linux操作系统,具有实用的界面,并且完全免费.越来越多的用户也开始使用ubuntu系统.下文是Ubuntu环境下九大最佳绘图程序推荐,具体内容如下所述. 在本文中 ...

  5. Ubuntu下九大最佳绘图程序---kolourpaint4 ubantu已经自带了

    ubuntu系统是以桌面应用为主的linux操作系统,具有实用的界面,并且完全免费.越来越多的用户也开始使用ubuntu系统.下文是Ubuntu环境下九大最佳绘图程序推荐,具体内容如下所述. 在本文中 ...

  6. Linux(Ubuntu)下嵌入式gdb调试环境

    系统原理课实验要做CMU的Bomblab实验,然而bombg文件在arm架构,因此要配置一个交叉编译/调试环境,曾测试在Ubuntu 15.04下直接安装arm-none-eabi-gdb,然而调试时 ...

  7. Ubuntu下使用opencv完成图像程序编程操作

    前言 一.安装opencv 1.1安装环境 1.2下载OpenCV 1.3解压opencv包 1.4使用cmake安装opencv 1.5使用 make 创建编译 1.6安装 1.7配置环境 二.实例 ...

  8. 在Ubuntu下编译运行C语言程序

    目录 实验题目 1 gcc编译 1.1 编译运行hello.c程序 1.1.1 使用vim创建hello.c文件 1.1.2 使用gcc将其转化为可执行文件 1.1.3 运行hello可执行文件 1. ...

  9. Ubuntu下安装天翼3G客户端程序。

    以前这个无线网卡插上去 就能使,什么也不需要设置,但是今天却死活上不去,于是去搜索了一下.先把解决方法写出: 首先,去天翼3G宽带的官方首页下载驱动,是linux版本的,地址如下:http://www ...

最新文章

  1. json数据交互与@RequestBody
  2. 1Python生成高质量Html文件:Pyh模块+Bootstrap框架
  3. 如何在 Windows 主机上访问本地局域网中的 Linux 主机
  4. 使用SqlCommandBuilder
  5. 使用2to3.py 转换 python2.x 代码 到python3
  6. 深度学习入门笔记:Day-10
  7. ET游戏框架整理笔记3: 常用内置组件功能
  8. 微信小程序支付封装-复制即用
  9. 等待事件之日志等待事件解决的方法
  10. 032-IDUtils 工具类模板
  11. 基于proteus的一个微程序CPU
  12. JAVA校园二手交易平台
  13. ArcGIS椭球面积计算Python代码
  14. sp3 文件格式说明
  15. CNSD/Echarts图的使用
  16. 运放电路的知识点(二)
  17. ubuntu 安装 有道词典
  18. 北京航天技术交流之行:北京和上海地铁的观感
  19. 伦敦用人脸识别抓错人!专家:要结合DNA技术才行 | 研究
  20. C语言实现模拟键盘输入字符串

热门文章

  1. 关于虚拟内存,你需要了解的一些概念
  2. Spring为什么建议使用构造器来注入?
  3. MyBatis日志到底是如何做到兼容所有常用日志框架的?
  4. 全球最大同性交友网站必备的五大神器!
  5. 你以为它挂了么?并没有!Apache Struts 2.5.22 GA 发布
  6. 阿里巴巴硅谷 Istio 专家解读Istio 1.0 发布
  7. java中的math.abs_Java abs() 方法
  8. 通过sftp打开php.ini,PhpStorm中如何使用SFTP功能 详细操作方法
  9. css订单导航栏横线动画,小程序 纯css 实现tab导航栏下划线跟随动画
  10. 微信小程序隐藏标题栏navigationBar的方法