magic-trace collects and displays high-resolution traces of what a process is doing. People have used it to: figure out why an application running in production handles some requests slowly while simultaneously handling a sea of uninteresting requests, look at what their code is actually doing instead of what they think it's doing, get a history of what their application was doing before it crashe
traceback — Print or retrieve a stack traceback¶ Source code: Lib/traceback.py This module provides a standard interface to extract, format and print stack traces of Python programs. It exactly mimics the behavior of the Python interpreter when it prints a stack trace. This is useful when you want to print stack traces under program control, such as in a “wrapper” around the interpreter. The modul
これは、なにをしたくて書いたもの? Pythonで、動作しているスレッドのスタックトレースを出力する方法は?ということで。 環境 今回の環境は、こちら。 $ python3 -V Python 3.8.10 使う標準ライブラリ 今回の目的は、このあたりを使えば良さそうです。 traceback --- スタックトレースの表示または取得 — Python 3.8.10 ドキュメント sys --- システムパラメータと関数 — Python 3.8.10 ドキュメント threading --- スレッドベースの並列処理 — Python 3.8.10 ドキュメント 以降、これらを使ってちょっと試していきたいと思います。 スタックトレースを出力するコードを埋め込む まずは、スタックトレースを出力したい処理自体の中に、スタックトレースを出力するコードを埋め込んでみます。 thread_dump
実行中のシステムの挙動を詳細にトレースする仕組みは、特に「よくわからない問題」に遭遇している時に重要です。今回はLinux向けのトレーシングツールの本命とも言えるeBPFを利用した各種ツールを紹介します。 eBPFに関する記事が今回以降、数回にわたって解説されています。あわせてご覧ください。 第688回 eBPFのコンパイラーに対応したツールでさまざまな挙動を可視化する(今回の記事) 第690回 BCCでeBPFのコードを書いてみる 第692回 sysfsやbpftoolを用いたeBPFの活用 第694回 libbpfとclangでポータブルなBPF CO-REバイナリ作成 第695回 入門BPF CO-RE eBPFとBPF Compiler Collection 改めて言うまでもなく、Linuxカーネルもしくはカーネル上で動いている各種タスクのパフォーマンスや挙動を調べなくてはならない
Perfetto は内蔵の Trace Processor を使ってトレーシング結果を SQL で集計できる。SQL を使って興味のあるデータを取り出すことで 標準の Perfetto UI では読み取りにくい傾向を可視化したり、 可視化を通して気づいた傾向を定量的に比較できるようになる。 これは Systrace にはなかった大きな利点だ。 この記事では Twitter と Instagram アプリのスクロール性能を評価する実例を交え Trace Processor の SQL インターフェイスを紹介する。 Twitter vs. Instagram ある Podcast を聞いていたら、ホストの iPhone ユーザが気まぐれで触った Android 端末をレビューしていた。彼によれば Android の Twitter アプリは iPhone に比べスクロールの出来が非常に悪いとい
Perfetto は Systrace の後継となる Android のトレーシングシステムだ。Android P から導入され, Android 10 からだいたいまともに使える。Systrace にはない様々な便利機能があるため森田はここ一年で Systrace から Perfetto に乗り換えた。今後の記事でなにかと Perfetto を使う予定なので、この記事で最低限の使い方を紹介しておきたい。 なおこの記事は Systrace を使っている人が乗り換えるための参考に書いた。トレーシング自体の有用性については、今後の記事で徐々に議論していきたい。 ADB からトレースをとる Systrace はデバイスにある atrace コマンドを Python でラップしたものだった。Perfetto ではデバイスの perfetto コマンドを直接使う。 $ adb shell perfe
はじめに Linuxのuftraceというツールを使うと, あるプログラムを実行している際の関数呼び出しの回数や 呼び出しの履歴(呼び出された順番)を記録, 表示することができます. この記事では, uftraceの使い方と, それを使って中身のよくわからない プログラムの中身を調査する(リバースエンジニアリングする) 方法を紹介します. 例題として, スプレッドシートプログラムgnumericのセルに 式を入力した際, その中身を読み取っている関数名や, そのソースコードの場所を突き止めることを目標にします (例えばgnumericに新しい関数を付け加えるという変更を したいと想像してください). このように, あるプログラムの機能変更や拡張をしたいというときに, ある機能を担っているのは, どのソースファイルや関数なのか を調べるという調査がしばしば必要になります. この時, uftr
what rr does rr aspires to be your primary C/C++ debugging tool for Linux, replacing — well, enhancing — gdb. You record a failure once, then debug the recording, deterministically, as many times as you want. The same execution is replayed every time. rr also provides efficient reverse execution under gdb. Set breakpoints and data watchpoints and quickly reverse-execute to where they were hit. rr
Kernel/VM/探検隊online part1での発表資料
この記事はLinux Advent Calendar 2019の1日目の記事です。 はじめに 環境 おことわり uname(1) uname(1)が出力する内容 strace(1) gdb(1) bpftrace systemtap Kernel Hack Livepatch おまけ RHEL 8.1 CentOS 8 まとめ はじめに 本記事ではLinuxサーバのホスト名、Linuxカーネルのバージョン、cpuアーキテクチャなどのシステム情報を表示するuname(1)を利用してLinux環境でのデバッグとカーネルハックについて説明していきます。本記事ではコマンドやツールの使い方の説明ではなくて、それらを使ってどのようにデバッグするのかというところを説明します。 環境 ディストリビューションにはFedora 31(x86_64)を利用します。動作環境はQEMUやlibvirt、Oracle
はじめに Haskell のデバッグ手法については、以下の記事がとても詳しく参考になります。素晴らしい記事です。 Haskell でのデバッグ手法あれこれ 今回はHaskellアプリケーションをデバックする際に、バックトレースのとても簡単な取得方法があったのでご紹介したいと思います。 まとめると以下の2行です。 $ stack build --profile $ stack exec -- <exe_name> +RTS -xc バックトレースの取得方法 まず、バックトレースを取得するために GHC.Stack で定義されている HasCallStack をクラス制約として追加します。
qira ./a.out QIRA is a timeless debugger. All state is tracked while a program is running, so you can debug in the past. Install it now. Linux required, 64-bit Ubuntu recommended. cd ~/ && wget -qO- https://github.com/geohot/qira/archive/v1.3.tar.gz | tar zx && cd qira-1.3 && ./install.sh b *0x8048446 Your breakpoint was hit 5 times, at change 90, 111, 128, 145, and 162. I drew red lines in the vt
RISC-V BOOMプロセッサの試行をしていると、パイプライントレースの出力方法としてgem5というものを利用していた。 github.com gem5というのは何なんだろう?調査してみる。 The gem5 Simulator: A modular platform for computer-system architecture research gem5 The gem5 simulator is a modular platform for computer-system architecture research, encompassing system-level architecture as well as processor microarchitecture. パイプラインプロセッサの性能を研究するためのシミュレータで、サイクルカウントを解析するためのツールも内蔵され
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く