LIBRTLD_DB(3) | FreeBSD Library Functions Manual | LIBRTLD_DB(3) |
名称
librtld_db — ランタイムリンカデバッグのためのライブラリライブラリ
library “librtld_db”書式
#include < rtld_db.h> void
rd_delete( rd_agent_t *rdap);
char *
rd_errstr( rd_err_e rderr);
rd_err_e
rd_event_addr( rd_agent_t *rdap, rd_notify_t *notify);
rd_err_e
rd_event_enable( rd_agent_t *rdap, int onoff);
rd_err_e
rd_event_getmsg( rd_agent_t *rdap, rd_event_msg_t *msg);
rd_err_e
rd_init( int version);
typedef int
rl_iter_f( const rd_loadobj_t *, void *);
rd_err_e
rd_loadobj_iter( rd_agent_t *rdap, rl_iter_f *cb, void *clnt_data);
void
rd_log( const int onoff);
rd_agent_t *
rd_new( struct proc_handle *php);
rd_err_e
rd_objpad_enable( rd_agent_t *rdap, size_t padsize);
rd_err_e
rd_plt_resolution( rd_agent_t *rdap, uintptr_t pc, struct proc *proc, uintptr_t plt_base, rd_plt_info_t *rpi);
rd_err_e
rd_reset( rd_agent_t *rdap);
解説
librtld_db ライブラリは、ランタイムリンカ (rtld) にデバッグインタフェースを提供します。このライブラリは、 libproc(3) と共にを使用されなければなりません。ほとんどのライブラリ関数は、 rd_agent_t 引数を取ります。この引数は、エージェントの現在の状態に関連している情報を含んでいる不透明な (サイズおよび形がわからない) 構造体です。
librtld_db を使用し始める前に、利用者は、 RD_VERSION 引数を付けて rd_init() を呼び出すべきです。これは、利用者のプログラムがコンパイルされた正しいバージョンでライブラリを初期化して、適切な ABI に安定性を提供します。
次は、それぞれ関数に関する説明です。
rd_new() は、新しい librtld_db エージェントを作成します。 php 引数は、利用者が libproc(3) から受け取った proc_handle であるべきです。
rd_reset() は、利用者の以前に作成されたエージェントをリセットします。
rd_delete() は、エージェントに関連するリソースを割り付け解放します。
rd_errstr() は、 rderr の現在のエラーについて説明するエラー文字列を返します。
rd_event_enable() は、イベントの報告を有効にします。この関数は、常に RD_OK を返します。
rd_event_addr() は、 event パラメータのイベントアドレスを返します。現在のところ、RD_NOTIFY_BPT イベントだけを報告します。
rd_event_getmsg() は、最後のイベントに関連するメッセージを返します。現在のところ、RD_POSTINIT イベントだけがサポートされています。
rd_loadobj_iter() によって、利用者は、プログラムのロードされたオブジェクトを全体を繰り返すことができます。 cb は、タイプ rl_iter_f() のコールバックです。
戻り値
ほとんどの関数は、 rd_err_e タイプのエラーを返します。エラーコードは、このライブラリのためのヘッダファイルに説明されています。利用者は、 rd_errstr() を使用してエラー文字列を取得することができます。歴史
librtld_db ライブラリは、 FreeBSD 9.0 ではじめて登場し、Solaris オペレーティングシステムに存在する同じライブラリを手本にしました。作者
librtld_db ライブラリとこのマニュアルページは、FreeBSD 財団の資金提供の下で <rpaulo@FreeBSD.org>によって書かれました。警告
関数 rd_event_enable(), rd_log(), rd_objpad_enable() と rd_plt_resolution() は、まだ実装されていません。June 10, 2010 | FreeBSD |