3

に 3 つのディレクトリが見つかりました/usr/share/gdb:

  • auto-load: これは、自動ロードされたスクリプトに使用されます。
  • python: これは gdb python 拡張に使用されます。
  • syscalls: これには amd64-linux.xml のようないくつかの xml ファイルが含まれており、Google で情報を見つけることができません。

ところで:私のOSはFedora 13です。

これらのxmlファイルが何に使用されているか教えてください。よろしくお願いします!

4

2 に答える 2

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 ファイルは、syscall 名と番号のマッピングを提供します。たとえばexit_group、x86-64 Linux の syscall 番号は 231 です。

于 2012-11-03T12:04:31.563 に答える
3

これは、特定のシステムでどのシステムコール番号がどのシステムコールにマップされるかを GDB に伝える非常に単純なリストです (これらはアーキテクチャ固有であるため)。

これらは、対応する Linux カーネル ヘッダーから生成されます (例: arch/x86/include/asm/unistd_32.hfor 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>
于 2012-10-19T19:13:04.907 に答える