私は通常このようなデバッガを使用しているので、幸いにもcgdb
これまで呼び出しデバッグに頼る必要はありませんでした。system
ロードするのに約30分かかるバイナリがありますがgdb
、それ以降はシンボル数が多すぎてデバッガが頻繁にクラッシュします。これにより、一般的なワークフロー(ロードgdb
、ブレークポイントの追加、問題変数の識別など)が不可能になりました。
Windowsでは、この時点で私のコードに多くのcout
and system("pause")
(貧しい人々のブレークポイント)ステートメントを追加し始めます。しかし、Unixのような環境ではこれをどのように実行しますか?
答え1
cin
貧しい人の情報を読んでみたいかもしれません。コーヒーを飲みながら続けるのではなく、入力をpause
待ちます。Entersleep()
答え2
私は時々このような方法を書いています。
#define BRK() do { printf("%s %d\n", __FILE__, __LINE__); getchar(); } while (0)
...
BRK(); // Stop and wait for enter
また、関数の計測が役に立ちます。 GCCでは、各関数の開始/終了をリンクできます。https://stackoverflow.com/questions/2281739/automatically-adding-enter-exit-function-logs-to-a-project
答え3
cout
/にも同じことが当てはまります。 - ビューをcerr
使用したり、より多くの情報を得ることができます。sleep()
man 3 sleep
man 3 usleep