【学習記録】GDBデバッグ学習

print が良い方法であることは以前から知っていましたが、IDE のデバッグを設定するのは非常に面倒で、本当に疲れました。GDB を学習してからは、非常に便利だと感じています。いくつかの注意事項は次のとおりです。

主な参考リンク (この情報は非常に優れています): https://www.yanbinghu.com/2019/04/20/41283.html

  • デバッグ用のコア ファイルを生成:
    デフォルトではコア ファイルは生成されないため、コア生成制限を解除する必要があります。また、解除後は、コアの保存パスがデフォルトになります。長時間探しましたが見つかりませんでした。ただし、次のように変更してパスを指定することもできます/proc/sys/kernel/core_pattern
ulimit -c unlimited		# 取消限制
echo "./core-%e-%p-%t" > /proc/sys/kernel/core_pattern	# 修改保存路径到当前路径 ./

参考リンク:https://blog.csdn.net/jiemashizhen/article/details/125016646
%p - ファイル名に pid を挿入 pid を追加
%u - ファイル名に現在の uid を挿入 現在の uid を追加
%g - ファイル名に現在の gid を挿入 現在のを追加gid
%s - コアダンプの原因となったシグナルをファイル名に挿入します。 コアの原因となったシグナルを追加します。
%t - コアダンプが発生した UNIX 時間をファイル名に挿入します。 コア ファイルが生成された UNIX 時間を追加します。
%h - コアダンプが生成されたホスト名を挿入します。 happens into filename ホスト名を追加します
%e - ファイル名にコアダンピング実行ファイル名を挿入します コマンド名を追加します
Ubuntu22.04 の apport サービスは、オンにするたびにこのファイルを自動的に書き換えます。apport を使用しない場合は、設定ファイル /etc/default/apport の設定を有効にします。 0 に設定すると、APPORT が閉じます。(まだテストされていません)

# 如果报权限问题,采用下面这句  
sudo sh -c 'echo "./core-%e-%p-%t" > /proc/sys/kernel/core_pattern'

「sudo echo x >」の場合は「権限が拒否されました」を避ける
A: 例 sudo echo a > 1.txt-bash: 1.txt: 権限が拒否されました
B: 分析: bash は、権限が不十分であるとしてこれを拒否します。リダイレクトの記号「>」も bash コマンドです。sudo は、echo コマンドにのみ root 権限を持つことを許可しますが、">" コマンドにも root 権限を持つことは許可しないため、bash は、こ​​のコマンドには情報を書き込む権限がないと判断します。
C: 解決策。3 つのタイプ: 1. 「sh -c」コマンドを使用します。これにより、bash は文字列を完全なコマンドとして実行できるようになり、sudo の影響範囲がコマンド全体に拡張されます。具体的な使い方は以下の通りです。sudo sh -c "echo a > 1.txt"

  • gdb インターフェースで画面をクリアするには、シェルのクリアを呼び出します。shell clear

  • 一般的な指示:
    ここに画像の説明を挿入します

Supongo que te gusta

Origin blog.csdn.net/tfb760/article/details/129696078
Recomendado
Clasificación