2012-09-26 78 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

相關問題