使用nim-gdb调试nim程序

原创
03/19 20:10
阅读数 1.4K

安装

  1. 前提有安装nim和mingw等
  2. nim新版本已加入nim-gdb工具方便调试, 没有可以下载放nim/bin下(8.0.0版以上gdb不用nim-gdb貌似也好调试 :)
  3. 下载安装python2或3
  4. 修改 nim/config/nim.cfg 里 大概214行 gcc.options.debug = "-g3 -O0 -gdwarf-3" 解决调试溢出问题

使用方法

首先我们写个dtest.nim

proc foo(x: int): int =
  let y = x + 2
  return y * 10
proc bar(x: int): int =
  if x == 3: return foo(x)
  return x * 100
proc main =
  var a = 1
  let str = "foobar"
  var seq1 = @[0, 1, 2, 3, 4]
  a = bar(1)
  a = bar(2)
  a = bar(3)
main()

然后终端运行 调试参数--debugger:native编译nim文件
nim c --debugger:native dtest.nim
编译完使用nim-gdb来调试程序
nim-gdb dtest

使用break或b 来设置断点 (输入函数名再按tab键 可以自动完成杂交函数名)
b
用run或r 开始运行, 然后会停在第8行断点
list或l 来查看行数周围的代码列表

next或n 来运行下一行, print或p 查看变量

step或s 进入函数地址, continue或c运行到断点或结束, finish或fin 运行到跳出当前模块
backtrace或bt 查看模块运行步骤, 从下往上
info break或i b 和delete或d 查看和删除断点
info locals或 i lo查看当前模块变量
watch或wa 可以让选择查看的变量改变时 变成断点
until或u 可以跳出循环模块 像while, for等
还有更多的命令, 可以详细了解下gdb :)

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部