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
straceはユーザーランドアプリケーションの挙動の確認やデバッグに使える便利なツールです。どのシステムコールが、どのような引数で呼び出され、その結果どうなったのかをログとして残せます。不可解な挙動をするプログラムを調べる上で覚えておくと損はないツールです。今回はstraceの基本的な使い方に加えて、わざとシステムコールをエラー終了させる、エラーインジェクションについても紹介しましょう。 不可解なプログラムについて この世にあるソフトウェアはすべて何らかの不具合を抱えています。もし不具合のないソフトウェアが存在するとしたら、その事実自体が不具合と言えるかもしれません。そのまま放置しておくと、きっと将来なにがしかの不具合が顕現することでしょう。よってソフトウェアエンジニアと呼ばれる人たちは、日々ソフトウェア様のご機嫌を伺い、こびりついた不具合を削ぎ落とし、場合によってはあえて不具合を埋め込み
Linuxのパケットがドロップしてる時にどうすればいいのかなー?って言うのを事例ごとに説明してみたスライドです。社内での勉強会LTで話をしたスライドです。
2022/08/28 Kernel/VM探検隊online part5 (https://kernelvm.connpass.com/event/256248/) の @nullpo_head (https://twitter.com/nullpo_head) の発表資料です。 ptraceを使って対象コマンドの全子プロセスにattachしてDwarfを見つつデバッグしたいプロセスを探し、最終的には他のデバッガに処理を流すような不思議なデバッガ(?)を作ることで、zero configurationでvscodeでブレークポイントを打ったプロセスのデバッグを始めてくれる dbgee (https://github.com/nullpo-head/dbgee) という便利ツールを作ったときの話をしました。
This article was discussed on Hacker News and on reddit. The major compilers have an enormous number of knobs. Most are highly specialized, but others are generally useful even if uncommon. For warnings, the venerable -Wall -Wextra is a good start, but circumstances improve by tweaking this warning set. This article covers high-hitting development-time options in GCC, Clang, and MSVC that ought
When people say “debuggers are useless and using logging and unit-tests is much better,” I suspect many of them think that debuggers can only put breakpoints on certain lines, step-step-step through the code, and check variable values. While any reasonable debugger can indeed do all of that, it’s only the tip of the iceberg. Think about it; we could already step through the code 40 years ago, sure
Raspberry Pi財団は、マイコン「RP2040」搭載のデバッグプローブキット「Raspberry Pi Debug Probe」の販売を開始した。 同財団は2021年1月、独自に開発したマイコン「RP2040」を搭載したRaspberry Pi Picoを発売。それ以来、Raspberry Pi Picoで動作するプログラムのデバッグに別のRaspberry Pi Picoを使うトレンドがあることから、Raspberry Pi Debug Probeの開発にいたったという。 RP2040搭載のRaspberry Pi Debug Probeは、ArmのCoreSightデバッグアーキテクチャを利用して、Raspberry Pi Picoを含むRP2040などCortex-M0+マイコンのアクセスポート経由でのデバッグが可能なデバッグプローブで、価格は12ドル(約1600円)だ。 R
TechFeed Experts Night Pick up Rustの非同期デバッグツールを使いこなせ! ~TechFeed Experts Night#9講演より 本記事は、2022年11月に開催された「TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る」のセッション書き起こし記事「Rustの非同期デバッグツールを使いこなせ! by κeen」を転載したものです。オリジナルはTechFeedをご覧ください。 「Rustの非同期デバッグツールを使いこなせ!」というタイトルで発表していきたいと思います。 κeenと申します。Twitterなどで騒がしくしている人なので、見たことある人も多いのではないかなと思います。仕事は、Idein Incという会社にいて、しばらくRustを書いている期間がありました。 今日は非同期の話をしていきますが、
No matter what kind of software you’re developing, you most definitely leverage logging to some extent, probably every single day. You write a lot of logs, you read tons of them too, it is the most basic observability tool we have. Not all logs are equal / Should you even log it?There are many pitfall that can lead to useless, wasteful and confusing logs. Therefore I follow a specific set of pract
本記事は、TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る のセッション書き起こし記事になります。 イベントページのタイムテーブルから、その他のセッションに関する記事もお読み頂けますので、一度アクセスしてみてください。 本セッションの登壇者 セッション動画 「Rustの非同期デバッグツールを使いこなせ!」というタイトルで発表していきたいと思います。 κeenと申します。Twitterなどで騒がしくしている人なので、見たことある人も多いのではないかなと思います。仕事は、Idein Incという会社にいて、しばらくRustを書いている期間がありました。 今日は非同期の話をしていきますが、その前にまず、非同期の話の中にタスクという言葉が出てくるのでそれについて前提を共有したいと思います。 そもそも非同期処理における”タスク”とは Future
C/C++でプログラムを書いているときに遭遇する厄介なバグの一つがメモリリークです。 今回はメモリリークを検出するのに使えるツールの使い方について書きます。 AddressSanitizer コンパイルオプションをつけるだけで使えて出力も見やすいのでおすすめです。 AddressSanitizerはGCC 4.8以降かLLVM 3.1以降で使うことができます。 コンパイル時にオプションをつけるだけでメモリリークを検出してくれます。(若干実行時間が長くなります) 以下のメモリリークのあるプログラム leak.cpp を例に使い方を説明します。 int main() { int *a = new int[10]; } newで作った動的配列をdeleteしていないのでメモリリークになります。 g++ -fsanitize=address -fno-omit-frame-pointer -g l
Go言語ではながらく公式のロガーとして log パッケージがありました。これは非常にシンプルなもので構造データをうまく表現できなかったりログレベルを分けるということができません。CLIで使うシンプルなインタラクションであればこれで十分なのですが、クラウド上のバックエンドで動かすサービスにとっては構造化ロギングやログレベルの出し分けは事実上必須であり、そのための機能は十分と言えませんでした。 これに対して様々なロガーが3rd party packageとして公開されてきましたが、一方で公式に導入されようとしているロガーもあります。それがslogです。まだ提案の段階ではありますが、現状で使える実装を触ってみたところかなり実用的な段階だなと感じたので、自分用の備忘録を兼ねてメモを残してみます。 サンプルコードはここにも置いてあります。 基本的な使い方 まず基本的な使い方を見てみます。ログ出力用に
package main import ( "fmt" ) var abc string func init() { abc = "wakuwaku bank" } func add(a, b int) int { fmt.Printf("func add %v\n", abc) return a + b } func sub(a, b int) int { fmt.Printf("func sub %v\n", abc) return a - b } func calculate(a, b int) (addValue, subValue int) { addValue = add(a, b) subValue = sub(a, b) return addValue, subValue } func sampleFunc1() { for i := 0; i < 10; i++ { a
Trace arbitrary compiled binaries and functions on Linux, at runtime with 0 modifications. Low overhead dynamic instrumentation Wachy uses the magic of eBPF to dynamically instrument binaries with minimal overhead. This also means there is 0 overhead for untraced functions. Deep code integration eBPF on its own can be difficult and time-consuming to use. The goal of wachy is to make userspace eBPF
edb is a debugger(like gdb and dlv) for eBPF programs. Normally eBPF programs are loaded into the Linux kernel and then executed, this makes it difficult to understand what is happening or why things go wrong. For normal applications we can use gdb or dlv to inspect programs, but these don't work for the eBPF due to the way eBPF is loaded into the kernel. edb uses userspace eBPF emulation to run e
この記事はOpenCV Advent Calendar 2021の 24 日目の記事です。文体は真面目ですが、内容はゆるふわにいきます。ふわふわ~。 はじめに OpenCV の Python bindings は便利ですよね。特に Jupyter notebook と組み合わせて処理結果を見ながら画像処理を組み立てて行ったりとかが簡単に出来ます。一方で C++ での OpenCV 開発の場合はどうでしょうか? 結果を一々 imwrite してたりしませんか? Windows で Visual Studio を使っている場合は、この記事で紹介する Visual Studio の Image Watch プラグインを使えばそんなことしなくても画像を見ながらデバッグが出来ます。 Image Watch plugin のインストール Visual Studio Marketplace で "ima
初めに 最近開発環境を整備していて、コンテナでGoアプリケーションをリモートでデバッグするのにちょっと面倒だったので、自分のメモも兼ねてやり方を残しておきます。 要件 プロジェクトによりますが、今の現場では主要エディタがVSCodeです。 もちろんVimユーザー(うち一人はぼく)がいるので、ターミナルでもデバッグできるように対応する必要があります。 また、コード変更を反映させるために都度イメージをビルドしてコンテナを再作成するは開発スピードが落ちるため、コンテナ再起動だけで反映されるようにする必要があります。 デバッガのしくみ Goにはdelveというデバッガがあります。 delveはClient-Serverモデルになっていて、次の2つのプロトコルで通信が可能になります。 JSON-RPC DAP JSON-RPCはdelveのCLIに使われています。 DAPはMicrosoftが策定し
概要 主な登場人物 決戦結線の時 JTAG ⇔ C232HM-DDHSL-0 UART ⇔ TTL-232RG-VREG3V3-WE 接続イメージ ソフトウエアの設定 openocdをインストールする Raspberry Pi 側でJTAGインターフェイスを有効化する ついでにシリアルポート出力とかも有効化しておく 参考: 私のconfig.txtの末尾はこうなっている openocdの設定 インターフェイスの設定 ターゲットの設定 動かしてみる openocdとのやりとり gdbとあわせて使う 付録: openocdがうまくいかないとき JTAGアダプタとシリアルケーブルがつながったRaspberry Pi 4 概要 Raspberry Piでベアメタルプログラミングをするときに、CPUが今実際にどこの命令を実行しているか、メモリ上にどのような値が存在するか…などの情報を確認できると、デ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く