You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
#!/bin/bash # 既存プロセスの標準出力と標準エラーを奪う https://qiita.com/kawaz/items/96af6fa59fdf999b94bd # ターゲットのPID pid=$1 [[ -d /proc/$1/fd ]] || exit 1 # 出力先はttyやファイルを指定 out="$2" # 出力先の指定がない場合は現在のttyを出力先にする if [[ -z $out ]]; then # プロセスに紐付いたttyを取得する https://qiita.com/kawaz/items/bd33fe1e29876939dddb function search_tty() { local pid=${1:-$$} tty="" while [[ 1 -lt $pid ]]; do [[ -d /proc/$pid/fd ]] || break tty=$(
OS: Oracle Enterprise Linux 5.8 GDB: GNU gdb 7.0.1-42.el5 解析に必要なファイル 別環境で発生した core ファイルを解析するためには以下のファイルが必要。 core ファイル 実行ファイル 共有ライブラリ 例えば、以下のように abort() でわざと core を吐かせて試してみる。 $ cat hello.c #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { printf("hello, world\n"); abort(); return 0; } $ gcc -o hello hello.c $ ./hello hello, world Aborted (core dumped) $ ls -ltr | tail -1 -rw
Date: July 12 to 14, 2013. Location: Google Headquarters Building 1200, 1200 Charleston Rd, Mountain View, California, USA http://goo.gl/maps/y4Kei Registration Fee: No charge. This event is completely funded by Google. WE HAVE REACHED CAPACITY. We cannot accept any more registrations. Sorry. Submission deadline: 28 February 2013. Note: we will also accept "last minute" BoF/talks at the conference
ここんとこセプキャン関連とかOSCの準備とかセミナー準備とか勉強会の準備とか なにかと忙しくて,自宅でもメールの返事とか準備とかいろいろとやっているうちに 時間が過ぎてしまってあまりKOZOSの開発ができていない. TCP/IP実装とかROM化とかGDB対応とか,いろいろやりたいことはあるのだが. 実際に開発しようとすると,マイコンボードの実機が無いと動作させられないのが まずネックになっている. ということで,エミュレータとかシミュレータのような仮想環境で動作させることが できれば電車の中とか出先のちょっとした時間とかでも開発できるので, ちょっとエミュレーション環境での動作を考えてみることにした. webで検索すると,H8用のエミュレータはいくつかあるようだ.しかしぼくは ふだんはGNU環境で開発しているのと,KOZOSのポリシーとしてGNU環境での開発を 主軸に置いているので,やっぱ
Table of Contents How do I use the gdb debugger? How do I... compile with debugging symbols? run programs with the debugger? restart a program running in the debugger? exit the debugger? get help on debugger commands? How do I watch the execution of my program? How do I... stop execution continue execution see where my program stopped? step through my code line-by-line? examine variables? modify v
TOC 概要 実行例 動作環境 (OS) ダウンロード ビルド環境 ビルド手順 解析可能なプログラム スクリーンショット forkするプログラムの解析 execするプログラムの解析 再帰 マルチスレッド みんなだいすき例外スロー mainの前に呼ばれる関数 制限事項 コマンドラインオプション 仕組み (つぶやき) 類似ツール 概要 tracefは、Linux向けの「関数コールトレーサ」です。 ディストリビューションに標準で含まれているltraceコマンドに似ていますが、次のような特徴・相違点があります。 DSO(DLL)内のライブラリ関数の呼び出しだけでなく、自作の関数の呼び出しもトレースできる 関数呼び出しの親子関係をツリー状に見やすく表示できる 関数の実装されているファイル名、行番号を表示できる これらの特徴により、 未知の大きなプログラムの動きを把握したいとき ソースコードを読む上で
gccとかgdbとかgoogle-perftoolsとか、C言語のLinux環境関連のメモ コンパイル # バージョンを確認する gcc -dumpversion # オプションつけないでコンパイル gcc xxx.c → a.out という名前の実行ファイルが出来る。実行権限もつけてくれるようだ。 # 実行ファイル名を指定したいとき gcc -o xxx xxx.c → xxx という名前の実行ファイルが出来る # その他のオプション -Wall : 警告を全部みせる -O1 (-O) : ゆるい最適化 -O2 : 普通の最適化 (普通はこれをつかうそうだ) -O3 : 強力な最適化 (コンパイラのバグを引き当てたりするそうだ) -g (== -g2) : デバッグ用のシンボル -g3 : マクロも展開する -g
gdb の gcore コマンドを使う デバッガの理論と実装を読んで以来、デバッガをもっと活用しようという意欲がわいてきました。そこで、gdb について調べていると、 gcore (generate-core-file) というコマンドを見つけました。 gcore は実行中のプロセスの core を生成する gdb のコマンドです。通常、 core ファイルはプログラムが異常終了したときにカーネルによって生成されますが、gdb の gcore コマンドを使えば実行中のプロセスを終了させることなく core ファイルを生成できます。 gcore コマンドは次のように使います。 % gdb (gdb) attach PID (gdb) gcore core (gdb) detach まず attach コマンドで PID を指定して実行中のプロセスにアタッチします (gdb -p PID で起
Linux is the fast growing state-of-the-art OS. This blog will focus on new kernel features, Review of the best opensource software and news. HOWTO's will also be added from time to time based on interest. I read in the mailing list (lkml) that kgdb has been integrated into the mainline kernel. So i wanted to test it out. Those who are not familiar with kgdb read this . Few years before, we needed
はじめに はてなダイアリーのスーパーpre記法(ブログ本文にソースコード等を貼り付けるための記法)で始まるテキストがクリップボードに入った状態で、間違って、gdbのシェルに貼り付けてしまった。そしたら、見たことの無い画面が出現。これは便利すぎる。 Linuxカーネルのコードを読むのに欠かせない技になりつつあるので、メモとして残しておこう。 使い方 めちゃくちゃ簡単。「>」を入力するだけ。 (gdb) >バックトレースが取れる状態で、フレームを選択して、「>」を入力すると、そのフレーム周辺のコードを見るためのビューアーがgdb内に立ち上がる。ビューアを良く見ると、左上に、閲覧中のファイルのパス、左端に行番号が表示されている。 ↑↓キーでコードを移動できる。ちょっと前後のコードも確認したい時に重宝する。(gdb)のコマンド履歴を遡りたい場合はCtrl+P。その逆は、Ctrl+N。Emacsと同
これまでUML(User Mode Linux)でカーネルデバッグできる環境を使って、カーネルの解析等を行ってきた。UMLの環境は、VMWare Server上のUbuntu 8.0.4に構築していたが、最近、起動しなってしまった。これまでKVM(Kernel-based Virtual Machine)に興味があったものの、手元にはIntel VT対応CPUが無く、ずっと試せない状況だった。そこで、Intel VT対応のマシンを新たに購入し、そのマシンにLinuxカーネル開発環境を作ることにした。 余談: 購入したマシンについて 購入したマシンスペックは、以下の通り。o'zzioのXRシリーズ。http://www.ozzio.jp/html/ozzio_xr_specs.htm このマシンにUbuntu 10.10をインストールした。 CPU: Intel Core i7 870 (8
前回までに、デバッガを使用する上での最低限のことを覚えました。 ステップ実行 変数の表示、変更 ブレークポイント 今回は少しレベルを上げて、よりデバッガを使いこなすためのコマンドを紹介します。 ウォッチポイント ウォッチポイントはブレークポイントに近いものですが、ブレークポイントのように「ある地点に遭遇したら停止」ではなく、「監視している変数を操作したら停止」という流れになります。 ファイル内から該当する変数名を探せばいいと考えるかもしれませんが、C言語ではポインタによる変数の別名を付けることが可能であるため、そう単純にはいきません。 書き込みの監視 あまりよいサンプルが思いつかなかったため、簡単で無意味な例を示します。 counter.c #include <stdio.h> void set_counter(int *); int count = 1; int watchee = 0;
ようやく、ようやく、ADTr20になってC/C++のコードがデバッガを使ってデバッグができるようになった(これ以下、NDKデバッグ機能と呼ぶ) これまでもgdb(GNU Debugger)を使ったデバッグができていたけど使い勝手的に難易度高い訳で。ようやくEcliseをつかってデバッグができるようになったのはかなりうれしい。 ということで、設定からデバッグまでの手順をメモしておく。 インストール 最初にADTr20を新規にインストールする。これはNDKデバッグ機能に必要なプラグイン(NDK plugins)は、ADTr18からのアップグレードではインストールされないから。ADTr18を削除して、ADTr20を新規にインストールした方が早い。 ADTr20だとインストールされるプラグインはこんな感じ。 NDKデバッグ機能は、CDT(EclipseのC/C++開発環境向けプラグイン)の機能に依
12. Android Builders Summit 2012 前回のPF部でABS 2012の資料斜め読みしましたが、以下のプレゼンがありました Using OpenOCD JTAG in Android Kernel Debugging スライド https://events.linuxfoundation.org/images/stories/pdf/lf_abs12_anderson.pdf ビデオ http://video.linux.com/videos/using-openocd-jtag-in-android-kernel-debugging ビデオ(01:51:54)見ましたが ●前振りが長い ●途中で音声が切れてる(@tetsu_kobaさんによるとマイクのトラブルらしいです) ●デバッガーは動かしてるけど、実際にデバッグはしてなさそう
Debugging the linux kernel using gdb The majority of day to day kernel debugging is done by adding print statements to code by using the famous printk function. This technique is well described in Kernel Debugging Tips. Using printk is a relatively simple, effective and cheap way to find problems. But there are also many other Linux-grown techniques that take debugging and profiling to a higher le
…GDBの機能を使用すると,テストを自動化できないだろうか…そんな疑問がよぎったのでちょっと試してみた. はじめに 基本方針 デバッガによるテスト 自動化へ向けて コマンドファイルの作成 量産 もう一越え はじめにまず,最初にこの頁はCによる開発を前提にしていることを断っておく.テストというと,最終的には実際に出来上がったものを対象に外部使用をチェックすることになる.しかし,そこに至るまでに関数単位でのテストをボトムアップでやっておかないと,障害の切り分けが繁雑になったり,モノができあがってから「この関数に問題があるので全体の構造をかえる必要がある」なんてことがわかっても困る.ということで,この頁では関数単位のテスト,すなわち関数の呼び出しとその結果のチェックを自動化することを目指してみる. 基本方針残念ながらテストの自動化といっても,全てが自動なわけではなく,テストを自動的に行なってくれ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く