次のようなオブジェクトでセグメント エラーが発生しました。
http_client_reset(struct http_client *client) {
if (client->last_req) {
/* @client should never be NULL, but weather
a valid object, I don't know */
...
}
}
GDB のコア ダンプ ファイルをデバッグすると、のメモリ アドレスclient
は0x40a651c0
. 何度か試しましたが、アドレスは同じです。
bt
次に、GDBでコマンドを試しました:
(gdb) bt
#0 0x0804c80e in http_client_reset (
c=<error reading variable: Cannot access memory at address 0x40a651c0>,
c@entry=<error reading variable: Cannot access memory at address 0x40a651bc>)
at http/client.c:170
Cannot access memory at address 0x40a651bc
バック トレース メッセージはありませんgrep
。ソース コードを編集しましたhttp_client_reset
。
- メモリアドレスのみを介してこのようなバグをデバッグするにはどうすればよいですか?
- フィールドにアクセスする前にオブジェクトが有効であると判断する方法はありますか (を除く
obj == NULL
)?