gdb のブレークポイントの後に呼び出される一連のコマンドを定義しようとしています。
break some_function
commands
up
next
printf "some_string"
continue
end
この場合 (たとえば) some_function で中断し、スタック フレームに移動して、次のコマンドを介してこの関数のすぐ後ろにジャンプし、「some_string」(または関数によって変更された変数) を出力し、あとは続けるだけです。しかし、gdb は次のコマンドの後に停止し、ユーザーが何かを入力するのを待って、次のコマンドを無視するため、うまくいきません。
編集:わかりました、上記の例は私の説明に正しく適合しませんでした. 私が本当に望んでいたのは(コメント者のニコライに感謝します。以下を参照してください)、次のようなものでした:
break some_function
commands
finish
printf "some_string"
continue
end
これは「some_function」で中断し、その関数を実行し、「some_function」の実行直後に文字列「some_string」を返して出力します。次のコマンドで以前に発生した問題は、finish コマンドで発生します。このコマンドの後に実行が停止し、gdb は次の printf ステートメントと continue ステートメントを無視して、ユーザーの入力を待ちます。申し訳ありませんが、この質問は少し混乱しました。私自身は満足していませんが、もう一度投稿することはより良い解決策ではありません (コメントが失われ、クロス投稿になるため)。