Ubuntu下使用GDB断点Go程序
2012-06-15 02:19
441 查看
大家好,今天为大家带来Ubuntu下,使用GDB断点调试Go程序。由于之前没有接触过GDB调试,而Go语言本身内置也没有什么调试工具,不像Eralng,有Debugger可以使用,我从网上搜索了下,也没有相关的中文教程,所以这边自己研究了下,给新手带来一篇关于GDB简单调试Go程序的文章。(关于GDB的文章还是不少的)
首先,编写测试代码,如下:
编译,并运行程序(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 值的时候,它的值很奇怪,麻烦知道的朋友留言告知,谢谢。
首先,编写测试代码,如下:
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 值的时候,它的值很奇怪,麻烦知道的朋友留言告知,谢谢。
相关文章推荐
- Ubuntu下使用GDB断点Go程序
- Ubuntu下使用gdb远程调试android native程序笔记
- Ubuntu 14.04 Qt5 使用 GDB-ImageWatch 插件断点查看 opencv cv::Mat 矩阵
- Ubuntu 14.04 Qt5 使用 GDB-ImageWatch 插件断点查看 opencv cv::Mat 矩阵
- 在ubuntu10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)
- 在ubuntu10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序)
- 使用 GDB 调试多进程程序
- Ubuntu 下使用Eclipse编译、调试嵌入式程序的方法(中)
- 使用gdb调试网络程序时,收到SIGPIPE信号异常退出问题
- 使用GDB调试开发板程序
- 使用GDB调试程序(2)
- 如何使用Node.js在Ubuntu上写一个HelloWorld程序
- ubuntu上位机(TK1、树莓派、笔记本电脑)安装使用rbx1或mrobot小车程序
- Visual Studio 2015中使用gdb远程调试linux程序
- [组图]Ubuntu 8.10使用CrossOver Linux Pro运行Windows程序
- 【Linux】使用gdb调试多进程多线程程序
- 使用VS+VisualGDB编译调试Linux程序
- ubuntu下使用Eclipse CDT插件编写多线程程序
- 使用GDB调试Android NDK开发的程序
- Go语言入门教程(三)在Ubuntu上使用Eclipse开发Go