2013-03-09 68 views
5

在gdb中,我可以通過「continue n」跳過下n個斷點,或者用next n跳過下n行。 lldb中有什麼等價物?在lldb中跳過下n個斷點

如果沒有,我怎麼能在lldb python擴展中自己創建它們?我嘗試了這樣的事情,但它不起作用,當我輸入我添加的命令時,lldb掛起。

def cc(debugger, args, result, dict): 
    target = debugger.GetSelectedTarget() 
    process = target.GetProcess() 
    process.Continue() 

回答

4

process continue命令接受一個-i選項,會忽略對您目前停在當前線程斷點下一匹配。例如

Process 13559 stopped 
* thread #1: tid = 0xb7da5, 0x0000000100000f21 a.out`main + 49 at a.c:7, stop reason = breakpoint 2.1 
    #0: 0x0000000100000f21 a.out`main + 49 at a.c:7 
    4  int i; 
    5  for (i = 0; i < 100; i++) 
    6  { 
-> 7   printf ("%d\n", i); 
    8  } 
    9 } 
(lldb) c -i 5 
Process 13559 resuming 
0 
1 
2 
3 
4 
5 
Process 13559 stopped 
* thread #1: tid = 0xb7da5, 0x0000000100000f21 a.out`main + 49 at a.c:7, stop reason = breakpoint 2.1 
    #0: 0x0000000100000f21 a.out`main + 49 at a.c:7 
    4  int i; 
    5  for (i = 0; i < 100; i++) 
    6  { 
-> 7   printf ("%d\n", i); 
    8  } 
    9 } 
(lldb) 

您還可以與breakpoint modify -i count bpnum直接設置斷點的忽略計數。

+0

很好的回答。非常感謝! – Rick 2013-03-14 02:50:19

+0

還有一件事。那麼跳過下n行?(如gdb中的'next n')。在lldb中,'process'沒有'step-over'子命令。 'thread'確實有'step-over',但看起來並不需要'-i'選項。 – Rick 2013-03-14 02:53:58

+0

'線程切換'(又名'n')帶一個'-i'選項將是一個很好的增強,我會建議它。儘管我不記得何時將tbr添加到lldb中,但可能不會記錄臨時斷點(「一次性」斷點)和命令別名「tbr」(它只是「斷點集」的一個選項)尚未發佈。 – 2013-03-14 03:24:35