gdbに関するemergentのブックマーク (7)
-
Docker上のcentosでgdbを動かそうとしたら、以下のようなエラーが出たので対応策のメモを書きます。 エラー内容 warning: Error disabling address space randomization: Operation not permitted Cannot create process: Operation not permitted During startup program exited with code 127. 原因 Dockerのコンテナ上で動くプロセスはそのままではptraceが使えないらしいです。 ptraceシステムコールは実行中の他のプロセスの動作をみたり、メモリーを書き換えたりできます。 straceやgdbはptraceシステムコールを使ってデバッグ機能を実装しているみたいです。 対応 コマンド 以下コマンドでdockerを起動し
-
gdb tips gdb を使う上で便利な tips を紹介します。基本的な使い方をマスターしている人向けです。 .gdbinit の設定 ホームディレクトリに .gdbinit を置いておくと、gdb の起動の際に読み込まれます。私の場合は次のような設定をしています。 set history save on set history size 10000 set history filename ~/.gdb_history set print pretty on set print static-members off set charset ASCII set history から始まる最初の3行は履歴に関する設定です。それぞれ、gdb のコマンドラインの履歴をファイルに保存する、保存する行は最大 10000 行、ファイル名は ~/.gdb_history 、という意味になります。
-
先日のShibuya.pm #9のLightening Talkで﹁gdbでXS on mod_perlをデバッグ﹂という話をしてきました。XSを使い出すと、従来のPerl的デバッグだけでは不十分なのでgdbをうまく使って、効率的にデバッグしましょう、という話です。実は、はてな社内では1年近く前に勉強で話したネタだったのですが、ようやく公開することができました。 Shibuya.pmでは5分という枠があったのでショートver.でしたが、ここでは制限はないので、本来のロングバージョンの資料をアップします。ちょっと公開できない情報が混っていたので、xxxで隠していますが、ご了承ください。 ちなみに、Rubyとかでも似た感じでデバッグできると思うので、そちらの人も参考にしてください。長いよ!という人は、最後の﹁これは設定しておけ的gdb初期化マクロ﹂だけでもどうぞ。かなり便利です。 (資料公開が
-
coLinux上でプログラムを実行してみる。 # ./pointer 8059: binding file ./pointer to /lib/tls/i686/cmov/libc.so.6: normal symbol `printf' [GLIBC_2.0] 5なぜかローダーのメッセージが出ているけど気にしない事にする。それよりも、coredumpせずに実行できてしまった事が驚き。仕方ないので宣言部分を適当にいじる。 int *n = (int *)0xAAAAAAAA;# ulimit -c unlimited # ./pointer Segmentation fault (core dumped)coredumpしたので中身をみていく。 # gdb pointer core GNU gdb 6.4-debian Copyright 2005 Free Software Founda
-
全国のprintデバッグ愛好家の皆様、こんにちは。VSとかEclipseとかのIDE以外でデバッガを使ったことのない僕がやってきましたよ。 最近、C言語でヒーコラ言ってる真っ最中な訳ですが、C言語だとprintデバッグがやりにくい訳で、デバッガ様の力を借りてみたくなった訳です。という訳で、巷で有名なgdb をちょっと試してみました。 基本的な使い方は、以下を参考にしてます。gdb を用いたデバッグ方法GDBウノウラボ Unoh Labs: gdbの使い方 で、なんだか Emacsからも使えるみたいなんで、試してみたんですが、これが使いやすくてびっくり。"M-x gdb" で起動すると、Emacs のソース上に、現在の行が黒三角で、ブレークポイントが赤丸で表示されます。後は、コマンドラインでの操作と同じように、sとかnでステップ実行できます。 あー、もしかして、Perl とか Rub
-
Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。gdbserver を使うことによって、Armadilloでイーサネット経由のリモートデバッグをすることができます。 1. gdbと、gdbserver のダウンロード Armadilloでクロスデバッグを行うには、ARMクロスデバッガと Armadillo上で動くgdbserverが必要です。 ARMクロスデバッガは以下の2つから使用しているOSにあわせてダウンロードしてください。 i386 Linux用 ARMクロスデバッガ i386 Cygwin用 ARMクロスデバッガ (参照‥[Cygw
-
GDB/GDBserverによるクロスターゲットのリモートデバッグ‥Programing Bible︵1/3 ページ︶ Linuxベースの組み込みシステムで動くアプリケーションのデバッグは厄介な仕事だが、GDBを使えば簡単に片付けられる。ここでは、GDBを使う上で最初の難関となるセットアップ周りについて解説する。 Linuxベースの組み込みシステムで動くアプリケーションのデバッグは厄介な仕事だが、理論上はGDB︵GNUデバッガ︶を使えば、ゆとりで片付けられるはずである。だが実際には、そのためのGDBのセットアップがやや難関となる。現実に作業が発生するし、克服すべき技術的な障害も存在するからだ。とはいえ、当て推量に頼らずプログラムを一定の方法で系統的にデバッグすることのメリットは、この作業に掛かる手間を補ってあまりある。この作業で生ずる困難を軽減するヒントを幾つか紹介しよう。 ターゲットプラ
-
1