我在以下位置找到了三个目录/usr/share/gdb
:
auto-load
:这用于自动加载的脚本;python
:这用于 gdb python 扩展;syscalls
:这包含几个 xml 文件,如 amd64-linux.xml,我无法通过谷歌找到任何信息。
顺便说一句:我的操作系统是 Fedora 13。
谁能告诉我这些 xml 文件的用途?谢谢并恭祝安康!
我在以下位置找到了三个目录/usr/share/gdb
:
auto-load
:这用于自动加载的脚本;python
:这用于 gdb python 扩展;syscalls
:这包含几个 xml 文件,如 amd64-linux.xml,我无法通过谷歌找到任何信息。顺便说一句:我的操作系统是 Fedora 13。
谁能告诉我这些 xml 文件的用途?谢谢并恭祝安康!
较新的 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。
这是一个非常简单的列表,它告诉 GDB 哪些系统调用号映射到特定系统上的哪些系统调用(因为它们是特定于体系结构的)。
它们是从相应的 Linux 内核头文件生成的(例如arch/x86/include/asm/unistd_32.h
for linux-i386
)。
例子:
<syscalls_info>
<syscall name="restart_syscall" number="0"/>
<syscall name="exit" number="1"/>
<syscall name="fork" number="2"/>
<syscall name="read" number="3"/>
<syscall name="write" number="4"/>
<syscall name="open" number="5"/>
...
</syscalls_info>