debug

unameコマンドから始めるデバッグ&カーネルハック入門

この記事はLinux Advent Calendar 2019の1日目の記事です。 はじめに 環境 おことわり uname(1) uname(1)が出力する内容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch おまけ RHEL 8.1 CentOS 8 まとめ はじめに 本記事ではLinuxサーバのホス…

Fedora Kernel test week参加記録

FedoraではkernelのテストイベントとかGnome 3.34 Test Day、I18N Test Day などのテストイベントがちょくちょくあります。 今回はKernel 5.3 Test Weekの備忘録です。ちなみに、この手のイベントはfedora MAGAZINEで紹介されることがあります。 今回の参加…

Linuxカーネルをgdbでデバッグ(またはディストリビューションのカーネルを使うときは当たってるパッチにも注意しよう)

この記事はLinux Advent Calendar 2018の1日目ですΣ(゚∀゚ノ)ノキャー イントロ ほんとは別の内容にしようと思ってたのですが、進めてる途中でカーネルのデバッグをするハメになったのでカーネルデバッグをネタにしてみました。カーネルのデバッグと言っても普通の…

Linuxでプロセス単位にaslrのon/offを切り替える仕組みめも

gdb turns off ASLR « codeblogを見ていてpersonality(2)を使えば良いのか〜と知ったのでめもです。 tl;dr personality(2)でADDR_NO_RANDOMIZEをセットすればoffにできる。 personality(2) aslr以外にも設定可能な項目はいくつか有ります。設定されている内…

libbfdのめも

libbfdの使い方のめもです。利用してるバージョンはbinutils-devel-2.31.1-13.fc29.x86_64です。 nmもどき アドレスとセクション名、それにdebug情報があればファイル名と行数を表示。連想配列が使いたかったのでヘッダファイルだけで実装されてるuthashとい…

Linux kernelをgdbでリモートデバッグするときはKASLRをoffにするのを忘れずに(´・ω・`)

カーネルをgdbでリモートデバッグできるようにするかーとか思ってやってたわけです。 しかし、下記のような感じでちょっとハマってました。 ブレークポイントが効かなかったり vmlinuxとvmlinuzの組が合ってるのにシンボル名が出なかったり Cannot access me…

elfファイルのdebugセクション分割とgdbの分割されたデバッグ情報のサポート機能めも

rpmパッケージとかは通常のパッケージとデバッグ用のパッケージを分けて、debugしたいときはデバッグ情報付きのパッケージをインストールしますよね。あれがどんな感じで動いているのか確認したのでメモです。 使っている機能としては、gdbのデバッグ情報の…

昨日のoopsから,バグが発生した場所を調べます.

昨日のoopsはこれです.まず,oopsにある原因のコードの場所を見ます. [12643.727359] RIP: 0010:[<ffffffffa02a00ae>] [<ffffffffa02a00ae>] count_free+0xae/0x131 [minix]そうすると,count_free()という関数で落ちていることがわかります. 後ろの0xaeはバグの場所で,0x131は関数のサイズで</ffffffffa02a00ae></ffffffffa02a00ae>…

double freeバグのデバッグ.

昨日久々に,double freeのバグに当たったので,それのデバッグ方法をメモ書き.こんな感じで,2重にfreeするバグを持ったプログラムがあったとして, サンプルなので,原因は簡単に分かりますけど・・・ [masami@moonlight:~]% cat double_free.c #include <stdio.h> </stdio.h>…

forkしてpipe読み書きにかかる時間.

こんなコードを書いて,Linux,Minixでかかる時間をtimeコマンドで見てみました. #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #include <sys/wait.h> int main(int argc, char **argv) { pid_t pid; int max; int i; int pfd[2]; char buf[16]; if (argc != 1) max = atoi</sys/wait.h></sys/types.h></stdio.h></stdlib.h></unistd.h>…

cのコードがどんな感じのアセンブラコードに落ちるのか確認

テスト環境はこんな感じです。 [masami@moon:~/build/debug_test]% uname -a Linux moon 2.6.30-rc7-x86tip-tip #1 SMP Tue May 26 23:41:24 JST 2009 x86_64 GNU/Linux [masami@moon:~/build/debug_test]% gcc -v Using built-in specs. Target: x86_64-lin…

emacs + gdbの組み合わせが素敵( ´∀`)ノ

この前のDebug Hacks Nightで実演していたemacs + gdbの組み合わせは便利!! 今まではタブが使えるターミナルで一個目のタブでemacs、2個目のタブでgdbとゆう感じでやってたけど1画面で見れるし、 gdbでの実行状態とemacs上のカーソルが連携してくれるから…

前にやったデバッグのメモでも書こう。

BTSでのやりとりはここ発端は久々にIRCでもと思ってxchatをデスクトップのメニュー(当時はfluxboxだったような)からxchatを選択しても起動しなかったのがきっかけ。起動失敗した理由が得られなかったのでコマンドラインから打てば分かるだろうということで…