एन ईडी आप का वर्णन अक्सर होता है, आमतौर पर some_utility_fn
के संदर्भ में बहुत कुछ कहा जाता है, लेकिन आप केवल some_other_fn
से कॉल में रूचि रखते हैं।
आप शायद सीवीएस ट्रंक से जीडीबी में नए एम्बेडेड पायथन समर्थन का उपयोग करके इस संपूर्ण बातचीत को स्क्रिप्ट कर सकते हैं।
अजगर के बिना, आप आप क्या कर सकते में सीमित हैं, लेकिन हमेशा की तरह तकनीक a()
पर एक विकलांग ब्रेकप्वाइंट है, और एक आदेश, b()
पर एक ब्रेकपाइंट से जुड़ी से यह सुनिश्चित करना है।
int a(int x)
{
return x + 1;
}
int b()
{
return a(1);
}
int call_a_lots()
{
int i, sum = 0;
for (i = 0; i < 100; i++)
sum += a(i);
}
int main()
{
call_a_lots();
return b();
}
gcc -g t.c
gdb -q ./a.out
Reading symbols from /tmp/a.out...done.
(gdb) break a
Breakpoint 1 at 0x4004cb: file t.c, line 3.
(gdb) disable 1
(gdb) break b
Breakpoint 2 at 0x4004d7: file t.c, line 8.
(gdb) command 2
>silent
>enable 1
>continue
>end
(gdb) run
Breakpoint 1, a (x=1) at t.c:3
3 return x + 1;
(gdb) bt
#0 a (x=1) at t.c:3
#1 0x00000000004004e1 in b() at t.c:8
#2 0x000000000040052c in main() at t.c:21
(gdb) q
देखा:
यहाँ एक उदाहरण है हम a()
b()
से कहा जाता है पर बंद कर दिया है, a()
करने के लिए पिछले 100 कॉल की अनदेखी।
स्रोत
2011-03-21 00:44:47
'आदेश 2' क्या करता है? –
@NathanFellman 'कमांड 2 '2 –
को तोड़ने के लिए कमांड को जोड़ता है क्या यह पाइथन के बिना स्वचालित हो सकता है? http://stackoverflow.com/questions/41397560/how-to-pass-cli-arguments-to-a-commands-inside-a-define-in-gdb –