Hi guys,

I'm trying to set breakpoint in gdb but found it's difficult to follow the 
codepath into child processes.


For example, if I want to see the calling path for get_datanode_rest_servers ( 
which calls getNodesInfo to request hdfs node information ), I do:
(gdb) break get_datanode_rest_servers
Breakpoint 4 at 0x5143b0
(gdb) c
Continuing.
[New Thread 0x7f4fd0d2c700 (LWP 20508)]
[Thread 0x7f4fd0d2c700 (LWP 20508) exited]
[New Thread 0x7f4fd0d2c700 (LWP 20511)]
[Thread 0x7f4fd0d2c700 (LWP 20511) exited]
Detaching after fork from child process 20515.


It doesn't seems work because I guess the function is called within child 
process.
However if I set follow-fork-mode child, gdb will quit after following the 
first forked process:
(gdb) set follow-fork-mode child
(gdb) c
Continuing.
[New Thread 0x7f4fd0d2c700 (LWP 20521)]
[Thread 0x7f4fd0d2c700 (LWP 20521) exited]
[New Thread 0x7f4fd0d2c700 (LWP 20524)]
[Thread 0x7f4fd0d2c700 (LWP 20524) exited]
[New process 20528]
[Thread debugging using libthread_db enabled]
process 20528 is executing new program: /bin/bash
Error in re-setting breakpoint 4: Function "get_datanode_rest_servers" not 
defined.
process 20528 is executing new program: /usr/bin/addr2line
Missing separate debuginfos, use: debuginfo-install bash-4.1.2-9.el6_2.x86_64


Program exited normally.
Missing separate debuginfos, use: debuginfo-install 
binutils-2.20.51.0.2-5.34.el6.x86_64


It calls addr2line when trying to get stack trace for writting logs, and gdb 
just quit program when addr2line finish.
I think there must be some easier way to track into child processes when 
debugging hawq, please give some advice.
Cheers

Reply via email to