2012-09-26 37 views
2

我有一个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的?返回,退出,退出,停止,loop_break命令没有达到我所希望的。

回答

2

有一个C形回流

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

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

define mycmd_helper 
    ... do complex thing 
end 
+0

我担心的是这种情况。假设有人不带有启示,我很快就会接受你的回答。谢谢! – piCookie

+0

@piCookie如果您使用的是最新的GDB版本的Python脚本,更好的方法可能是实现'在Python中,你有一个真正的编程语言的全功率在您的处置mycmd'。 –

+0

唉,我想切换到Python在第二位,但不可用在我的GDB。谢谢你的建议。 – piCookie

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 
+0

不错的工作。我喜欢 - 谢谢。 – piCookie

相关问题