クラッシュが発生する前に、いくつかのグローバル変数を検査したいと思います。この問題は特定のスタック トレースでのみ再現され、最も内側の関数 (またはスタックの他の関数) にブレークポイントを設定しても、十分に近づくことはできません。
スタックの一番上にこのようなものが含まれている場合にのみ、ブレークの結果を達成できますか?
#0 __GI_connect
#1 curl_connect
#2 get_file
#3 init_assets
やってるだけ
b init_assets
c
b get_file
c
...
init_assets が複数回呼び出され、curl を毎回呼び出すわけではないため、gdb は curl を使用する無関係なコードで中断します。
後で編集:別の方法は次のとおりです。
b inner_func
ignore 1 10000
r
# app crashes
info b
Breakpoint 1 has been hit 10 times.
次に、ブレークポイントを削除して再度追加し、9 回だけ無視します。アプリを再度実行すると、gdb は 10 回目 (inner_func がクラッシュしたとき) に停止します。
rr
実行の変動が大きすぎる場合は、アプリを mozilla に記録することもできます。