如何在中间停止gdb用户定义的命令?

时间:2012-09-26 15:41:42

标签: debugging gdb

我有一个gdb用户定义的命令可以进行一些设置,然后可以完成一项简单的工作或复杂的工作。该命令遵循以下基本结构:

define mycmd
  # Common setup

  if ($argc == 0)
    # Some simple thing a few lines long
    ## What goes here so I exit mycmd?
  end

  # A lot of lines doing a complex thing
end

是否有类似C的返回我可以代替##行立即终止mycmd? return,exit,quit,stop,loop_break命令不能达到我的预期效果。

2 个答案:

答案 0 :(得分:2)

  

是否有类似C的回报

似乎没有。可能的解决方案是

define mycmd
   ... common setup
   if (condition)
     ... do simple thing
   else
     mycmd_helper
   end
end

define mycmd_helper
   ... do complex thing
end

答案 1 :(得分:1)

这不是它的主要用途,但你可以使用loop_break:

define mycmd
  # Common setup
  set $i=1
  while $i == 1
    set $i=0
    if ($argc == 0)
      # Some simple thing a few lines long
      ## What goes here so I exit mycmd?
      loop_break
    end

    # A lot of lines doing a complex thing
  end
end