Re: Some questions about using gdb catch syscall function
Doug Evans <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <CADPb22S2X+KDghvq9RvBOiBF-ahuUKzm6s5PJ_stmTnvV9viFA@mail.gmail.com> |
On Mon, Dec 8, 2014 at 6:16 PM, Nan Xiao <[email protected]> wrote: > Hi all, > > I am using gdb's catch syscall function(https://sourceware.org/gdb/onlinedocs/gdb/Set-Catchpoints.html#index-catch-syscall), and meets some issues. The procedure of running gdb is like this: > > (gdb) catch syscall > warning: Can not parse XML syscalls information; XML support was disabled at compile time. > Catchpoint 1 (any syscall) > (gdb) catch syscall 1 > Catchpoint 2 (syscall 1) > (gdb) catch syscall read > Unknown syscall name 'read'. > > My questions are: > (1) gdb prints "warning: Can not parse XML syscalls information; XML support was disabled at compile time.". Does it affect the normal use of catch function? It seems the gdb can set catchpoint normally. You need to build gdb with "libexpat". Check that you have it installed (I'm assuming not) and rebuild gdb. If you have libexpat installed in a non-standard place, there are options to gdb/configure to tell the build system where to find libexpat. bash$ gdb/configure --help # and grep for expat > > (2) I can use "catch syscall number" correctly, why can't use "catch syscall name"? gdb uses libexpat to parse the xml descriptions of the syscalls, which is how it knows their names. No libexpat -> no ability to recognize syscall names. > > P.S., my gdb is 7.8.1 and runs on Linux X86. > > Could anyone give any comments about this issue? Thanks very much in advance! > > Best Regards > Nan Xiao