EN JA
LIBRTLD_DB(3)
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 財団の資金提供の下で Rui Paulo <rpaulo@FreeBSD.org>によって書かれました。

警告

関数 rd_event_enable(), rd_log(), rd_objpad_enable() と rd_plt_resolution() は、まだ実装されていません。
June 10, 2010 FreeBSD