什么是/ usr / share / gdb / syscalls用于

时间:2012-10-19 19:09:50

标签: xml linux gdb system-calls

我在/usr/share/gdb中找到了三个目录:

  • auto-load:这用于自动加载的脚本;
  • python:这用于gdb python扩展;
  • syscalls:这包含几个xml文件,例如amd64-linux.xml,我无法通过谷歌找到任何信息。
BTW:我的操作系统是Fedora 13。

有谁能告诉我这些xml文件用于什么?谢谢和问候!

2 个答案:

答案 0 :(得分:4)

较新的GDB可能会破坏系统调用:

(gdb) help catch syscall
Catch system calls by their names and/or numbers.
Arguments say which system calls to catch.  If no arguments
are given, every system call will be caught.
Arguments, if given, should be one or more system call names
(if your system supports that), or system call numbers.

示例:

$ gdb /bin/true
(gdb) catch syscall exit_group 
Catchpoint 1 (syscall 'exit_group' [231])
(gdb) run
Starting program: /usr/bin/true 

Catchpoint 1 (call to syscall exit_group), 0x00000038464baa09 in __GI__exit (status=status@entry=0)
    at ../sysdeps/unix/sysv/linux/_exit.c:33
33        INLINE_SYSCALL (exit_group, 1, status);

XML文件将系统调用名称提供给数字映射,例如exit_group是x86-64 Linux上的系统调用号231。

答案 1 :(得分:3)

这是一个非常简单的列表,它告诉GDB哪些系统调用号码映射到特定系统上的哪些系统调用(因为它们是特定于体系结构的)。

它们是从相应的Linux内核头文件生成的(例如arch/x86/include/asm/unistd_32.h的{​​{1}})。

示例:

linux-i386