[golang学习] 在idea中code & debug

idea 虽然审美倒退了n年. 不过功能还是相当好用的.

idea 的go插件堪称最好的go ide.

1. 语法高亮支持

2. 智能提示

3. 跳转定义(反跳转回来)

4. 集成debugger

还有重构等等功能也不错.

这些都是用起来让人很舒服的功能. 你要是用vim/emacs/sublime啥的. 当我没说.

很多人可能都不知道golang 代码可以debug. 很多人用console gdb命令式的调试. 如果不需要界面化的调试器, 也可以略过了.

1. 语法高亮支持

配色看起来挺搓的. 默认的, 我也懒得改. 大家可以随便改...

2. 智能提示

虽然我觉得VS + VA的提示更吊一点. 不过这样也还不错.

3. 跳转定义(反跳转回来)

这在查看代码时很有用.

比如我跳转到fmt.Print的声明. 我还想跳转回来. 就可以back一下, 然后继续code.

4. 集成debugger

这个是重头戏. 先上两个图.

可以很方便的增删断点.

可以单步调试等等.

下面的debugger 页签中有三个窗口

frames窗口 : 查看stack 堆栈

variables窗口 : 查看变量, 可以看出来, 支持显示复杂变量. 比如 []byte string struct等.

watch窗口 : 监视变量

这个是gdb的命令窗口. 直接手动输入gdb 命令. 呵呵. 就和console的gdb一样.

还有重构什么的. 都基于idea. 体验也不错.

好了, 可以实现的效果都看了. 下面说下如何实现这些效果.

1. 安装idea 和 go 插件

从这里https://www.jetbrains.com/idea/ 下载idea 最新的community版本.

从这里https://github.com/go-lang-plugin-org/go-lang-idea-plugin/releases 下载最新的golang plugin 版本.

也可以直接从idea 的插件仓库中在线安装. 但那个版本比较旧. 不支持go 1.4. 而插件的作者还没有发布修复版的release. 所以建议直接使用alpha版本.

打开idea后, 选择configure -> plugins , 然后选择 install plugin from disk . 选择刚才下载的golang plugin的jar包. 即可.

2. 配置golang

打开configure  -> Project Default -> Project Structure. 在这里配置golang的sdk.

3. debug golang

选择 菜单run -> edit configurations 打开 run/debug configurations窗口.

这里似乎有点小问题. 如果enable debugging无法勾选的话. 先勾选/反勾选 build before run. 然后勾选enable debugging.

注意. 必须勾选enable debugging. 否则无法调试.

然后切换到debug标签.

gdb 可以从mingw / liteide / zesu 等等中复制出来. 要求版本应该是7.1以上.

gdb.exe对应32位系统.

gdb64.exe对于64位系统.

不能混用. 否则无法识别exe的格式.

最后, run -> debug "test" . 骚年开始调试喽.

时间: 2024-10-10 06:12:27

[golang学习] 在idea中code & debug的相关文章

【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

[转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空间 System.Diagnostics 包含用于跟踪执行流程的 Trace.Debug 和 TraceSource 类,以及用于分析代码的 Process.EventLog 和 PerformanceCounter 类. 跟踪是一种在应用程序运行时监视其执行情况的方式.当开发 .NET Frame

golang学习笔记:golang 语法篇(二)

在语法篇(一)中学习了go中基本的数据类型.变量.常量等组成语言的基本要素,在这一节中将会学习如何将这些元素组织起来,最终写成可以执行的代码. 在这一部分包括: go中的流程控制语句: go中函数的用法: go特殊的错误处理方式: Golang中的流程控制语句 在具体编程的时候免不了需要使用一些特殊的语句实现某些功能,比如使用循环语句来进行迭代,使用选择语句控制程序的执行方式等.这些语句在任何一门程序设计语言 中都会有支持,golang中除了支持常用的循环,条件选择语句以外,还支持跳转语句,下面

在Intellij IDEA中使用Debug

Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码. 所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容: 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug 十.附:JRebel激活 一.Debug开篇 首先

【golang学习】环境搭建

近期项目的需要开始了学习golang的旅程,在此将学习的过程做以记录,方便查看,也希望帮助到大家. 由于我使用的是64位linux环境(redhat 5.2),所以这里就介绍64位的安装方式,其他类似: 1. 下载安装包 自从2014年5月谷歌在国内被封杀之后,我们下载go安装包也得翻墙了,但是为了方便我上传了一个64位linux的包在(地址),你可以直接下载使用. 2.安装 下载完上传到你的linux系统中,比如/opt/go1.1.1.linux-amd64.tar.gz,这是就开始安装了,

[golang学习] goroutine调度

这两天有些闲功夫, 学习下golang, 确实非常简洁. 不过有些缺憾. 在我的测试中. golang的调度(goroutine)似乎不是非常好. func say(k int) { fmt.Println(k) } func main() { runtime.GOMAXPROCS(2) for i := 0; i < 100; i++ { go say(i) } for { } } 这段测试代码是有bug的. 一开始我并没有设置 runtime.GOMAXPROCS(2) 则由于for循环导致

Intellij IDEA中使用Debug

Intellij IDEA中使用Debug Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码. 所以学习下如何在Intellij IDEA中使用好Debug,主要包括如下内容: 一.Debug开篇 二.基本用法&快捷键 三.变量查看 四.计算表达式 五.智能步入 六.断点条件设置 七.多线程调试 八.回退断点 九.中断Debug 十.附

PHP的学习--在sublime中使用XDebug(Ubuntu)

说起来惭愧,自从开始使用Sublime Text之后,再也没有debug过PHP的代码,最近把debug的环境搭建了一下,在这里记录一下. 安装XDebug sudo apt-get install php5-xdebug 编辑xdebug.ini文件,添加如下配置 xdebug.remote_enable=1 xdebug.remote_handler=dbgp xdebug.remote_host=127.0.0.1 xdebug.remote_port=9000 xdebug.remote

eclipse中的debug的用法

最基本的操作是: 1.首先在一个java文件中设断点,然后debug as-->open debug Dialog,然后在对话框中选类后--> Run 当程序走到断点处就会转到debug视图下. 2.F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执行本行代码,跳到下一行, 3.F7是跳出函数 4.F8是执行到最后. 1.Step Into (also F5) 跳入 2.Step Over (also F6) 跳过 3.Step

Python 程序员的 Golang 学习指南(III): 入门篇

基础语法 类型和关键字 类型 // 基础类型 布尔类型: bool 整型: int8,uint8,int16,uint16,int32,uint32,int64,uint64,int,rune,byte,complex128, complex64,其中,byte 是 int8 的别名 浮点类型: float32 . float64 复数类型: complex64 . complex128 字符串: string 字符类型: rune(int32的别名) 错误类型: error // 复合类型 指