タグ

debugに関するhfmgardenのブックマーク (4)

  • ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう! - プログラムモグモグ

    他のプロセスを中断せずに、その出力をミラーリングして新しくパイプで繋ぐ、そんなことはできるのでしょうか。 straceやgdbといったコマンドは一体どういう仕組みで動いているのでしょうか。 ptraceシステムコールを使い、プロセスが呼ぶシステムコールを調べて出力を覗き見するコマンドを実装してみたいと思います。 ptraceシステムコール Linuxを触っていると、いかにプロセスを組み合わせるか、組み合わせる方法をどれだけ知っているかが重要になってきます。 パイプやリダイレクトを使ってプロセスの出力結果を制御したり、コードの中からコマンドを実行して、終了ステータスを取得したりします。 プロセスツリーやプロセスグループを理解し、シグナルやnohupコマンドを使ったりします。 プロセスの扱いに慣れると疑問に持つのがstraceやgdbの仕組みです。 プロセスの実行しているシステムコールを出力し

    ptraceシステムコール入門 ― プロセスの出力を覗き見してみよう! - プログラムモグモグ
  • How to Debug Anything

    Does your code work? Probably not. The libraries you're using probably don't work either. If you're lucky, the OS does, but even then you'll probably find something wrong if you look hard enough. Debugging is the reason that the last 20% of shipping a product usually accounts for 80% of the time. And yet, there are a million blog posts and talks about writing code, but very few about figuring out

    How to Debug Anything
  • gdb のRPM に付属する /usr/bin/gstack, /usr/bin/gcore コマンド - hibomaの日記

    Scientific Linux 6 系の gdb の RPM に /usr/bin/gstack, /usr/bin/gcore というスクリプトが含まれているのを知りました。どちらも gdb をラップしたシェルスクリプトです。 (追記: CentOS5 の gdb にも入ってました ) /usr/bin/gstack 指定したプロセス(マルチスレッドの場合は全スレッド)のスタックトレースを表示します monit の例 # /usr/bin/gstack `cat /var/run/monit.pid` Thread 2 (Thread 0x7fd3ea10a700 (LWP 27548)): #0 0x0000003cb48dea63 in poll () from /lib64/libc.so.6 #1 0x000000000041c9c7 in can_read_ms () #2

    gdb のRPM に付属する /usr/bin/gstack, /usr/bin/gcore コマンド - hibomaの日記
    hfmgarden
    hfmgarden 2013/12/18
    オモチャ を てに いれた !
  • monit 5.4 のバグ - マルチスレッドでfork(2)してデッドロック - hibomaの日記

    プロダクション環境で使用していた monit 5.4 がデッドロックを起こしていたので調査をしていました。なお、エントリで記述されているバグは monit 5.5 で修正されています 要約 長い内容なので最初にまとめておくと monit はマルチスレッドアプリケーションである monit 5.4 には fork(2) 後に localtime_r(3) を呼び出す処理があり、これらが稀にデッドロックを引き起こす monit 5.5 系では fork(2) 前に 変更された。 /usr/bin/gstack は便利ツール マルチスレッド + fork(2) でデッドロックするパターンに要要注意 これらの内容に興味がある方は読み進めていただければ ... 問題になった monit プロセスの運用について 該当の monit は 定期的に監視プロセスを再起動する役割で使われています。再起動をす

    monit 5.4 のバグ - マルチスレッドでfork(2)してデッドロック - hibomaの日記
  • 1