Some questions about using gdb catch syscall function

Doug Evans dje@google.com
Tue Dec 9 02:54:00 GMT 2014


On Mon, Dec 8, 2014 at 6:16 PM, Nan Xiao <xiaonan19830818@qq.com> 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



More information about the Gdb mailing list