This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Some questions about using gdb catch syscall function
- From: Doug Evans <dje at google dot com>
- To: Nan Xiao <xiaonan19830818 at qq dot com>
- Cc: gdb <gdb at sourceware dot org>
- Date: Mon, 8 Dec 2014 19:29:25 -0800
- Subject: Re: Some questions about using gdb catch syscall function
- Authentication-results: sourceware.org; auth=none
- References: <tencent_2AE9A6F86BC6AEB6020750A9 at qq dot com> <CADPb22S2X+KDghvq9RvBOiBF-ahuUKzm6s5PJ_stmTnvV9viFA at mail dot gmail dot com> <tencent_70C720E20ECE061354ED9A4E at qq dot com>
I believe so.
I've never actually tried it without libexpat, but I'd be surprised if
it didn't work.
On Mon, Dec 8, 2014 at 7:18 PM, Nan Xiao <xiaonan19830818@qq.com> wrote:
> Hi Doug,
>
> Thanks very much for your detailed and kindly explanations!
>
> Per my understanding, if no "libexpat", "catch syscall" and "catch syscall number" still work normally, except some warnings. Right?
>
> Best Regards
> Nan Xiao
> ------------------ Original ------------------
> From: "Doug Evans";<dje@google.com>;
> Date: Tue, Dec 9, 2014 10:53 AM
> To: "Nan Xiao"<xiaonan19830818@qq.com>;
> Cc: "gdb"<gdb@sourceware.org>;
> Subject: Re: Some questions about using gdb catch syscall function
>
> 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