Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
組み込み開発におけるデバッガ
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Shuntaro
September 05, 2025
Technology
20
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
組み込み開発におけるデバッガ
Astrocamp衛星開発ゼミ資料
Shuntaro
September 05, 2025
More Decks by Shuntaro
See All by Shuntaro
Phase transition in van der waals equation
shuntaro0318
1
25
Other Decks in Technology
See All in Technology
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
790
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
560
【Claude Code】鹿野さんに聞く 私の推しの並行開発環境 大公開 / claude-code-parallel-2026-07-15
tonkotsuboy_com
12
8.7k
個人開発で育てる「大規模設計の苗床」 - AI時代の1人開発から始める業務への知識接続 / The Seedbed for Large-Scale Design - From AI-Era Solo Projects to Professional Knowledge
bitkey
PRO
1
280
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
420
AIが実装を自走する時代の認知負債との戦い
lycorptech_jp
PRO
1
280
知らん間に、回ってる
ming_ayami
0
720
SRE本の知られざる名シーン / The Hidden Gems of Google SRE Book
nari_ex
1
420
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
430
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
390
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
変更し続けられるシステムをどう保つか — AI時代のSSoTという設計原則
kawauso
0
120
Featured
See All Featured
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
A Soul's Torment
seathinner
6
3.1k
It's Worth the Effort
3n
188
29k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
ラッコキーワード サービス紹介資料
rakko
1
3.9M
Become a Pro
speakerdeck
PRO
31
6k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
340
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Ruling the World: When Life Gets Gamed
codingconduct
0
280
Product Roadmaps are Hard
iamctodd
55
12k
Odyssey Design
rkendrick25
PRO
2
730
Transcript
組み込み開発におけるデバッガ GDB・JTAG・SWD・OpenOCD など Shuntaro Nakanishi 2025-09-03
Outline 1. デバッガとは . . . . . . .
. . . . . . . . . 2 1.1 デバッガとは . . . . . . . . . . . . 3 1.2 代表的なデバッガ . . . . . . . 4 1.3 デバッガの主な機能 . . . . 5 2. 使い方 (VSCode) . . . . . . . . . . . 6 2.1 設定 . . . . . . . . . . . . . . . . . . . . . 7 2.2 ブレイクポイント . . . . . . . 8 2.3 ステップ実行 . . . . . . . . . . . . 9 2.4 メモリ検査 . . . . . . . . . . . . 10 2.5 コールスタックの確認 . 11 3. CPU デバッグ . . . . . . . . . . . . . 12 3.1 全体像 . . . . . . . . . . . . . . . . . 13 3.2 これらの技術が可能にした こと . . . . . . . . . . . . . . . . . . . . 14 3.3 JTAG . . . . . . . . . . . . . . . . . . 15 3.4 SWD . . . . . . . . . . . . . . . . . . . 16 3.5 OpenOCD . . . . . . . . . . . . 17 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 1 / 17
1. デバッガとは
1.1 デバッガとは デバッグ作業(バグの原因を探して取り除く作業)を支援するツールの こと。デバッガがなければ、printf などでログを大量に表示してメモリ や変数の値、関数の呼び出しを調べる必要がある。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03
3 / 17
1.2 代表的なデバッガ • GDB(GNU Debugger) GNU プロジェクトによって開発されたデバッガ。C/C++などの言語で広く使用され、コマ ンドラインから操作可能。GCC でコンパイルされたプログラムのデバッグによく用いられ る。
• LLDB(LLVM Debugger) LLVM プロジェクトによって開発されたデバッガ。Clang でコンパイルされたプログラムの デバッグに使用され、モダンなアーキテクチャを採用。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 4 / 17
1.3 デバッガの主な機能 • ブレイクポイントの設定 プログラムの特定の場所に一 時停止する地点を設定でき る。 • ステップ実行 プログラムを1行ずつ実行す
ることができる。 • メモリの確認 実行中の任意のタイミングで 特定の変数の値やメモリの内 容を確認できる。 • コールスタックの確認 プログラムが関数を呼び出し た履歴を確認できる。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 5 / 17
2. 使い方 (VSCode)
2.1 設定 .vscode/launch.json でデバッガの設定を行う。 C/C++の場合は VSCode の C/C++ 拡張機能が必要。 この拡張機能が
VSCode が使う DAP と、GDB が使う独自の通信プロ トコル(MI プロトコルなど)との間で、コマンドと情報の翻訳を行う デバッグアダプタの役割を担う。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 7 / 17
2.2 ブレイクポイント Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 8 / 17
2.3 ステップ実行 Continue Step Over Step Into Step Out Restart
Stop Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 9 / 17
2.4 メモリ検査 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 10 / 17
2.5 コールスタックの確認 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 11 / 17
3. CPU デバッグ
3.1 全体像 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 13 / 17
3.2 これらの技術が可能にしたこと • JTAG (1980 年代): メーカー専用装置に依存せず、標準化されたオ ンチップデバッグ/境界スキャンを実現。 • GDB
(1988 年): ホスト PC とターゲット間でシリアル/TCP/IP を 用いたリモートデバッグを実現。 • OpenOCD (2005 年): 多様な USB-JTAG/SWD アダプタを共通化 し、GDB とターゲットの橋渡しを実現。 • SWD (2009 年): 2 線で JTAG 相当のデバッグを可能にし、低ピ ン・省配線を実現。 • CMSIS-DAP (2012 年): ARM 標準のデバッグプロトコルにより、 統一的な USB 経由デバッグを実現。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 14 / 17
3.3 JTAG JTAG は 4 本の信号線を用いる。 TCK(クロック) TDI(データ入力) TDO(データ出力) TMS(状態制御)
元々は基板検査の規格であった。 今では、各メーカーがプライベート命令やオ プションレジスタを使って、CPU デバッグ にも使用されている。 JTAG を拡張したものとして有名なものは、 ARM の CoreSight がある。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 15 / 17
3.4 SWD ARM 社が定めた JTAG と共存可能な 2 線 式のデバッグインタフェース。信号線が4つ 必要な
JTAG はピン数が少ないマイコンに とって、大きな問題となっており、SWD が 導入された。 信号線は以下の通り。 • SWDIO: データの送受信 • SWCLK: クロック Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 16 / 17
3.5 OpenOCD Open On-Chip Debugger の略で、JTAG を使ったデバッグを行うた めのオープンソースソフトウェア。 gdb server
および talnet server の機能を持ち、様々なデバックプ ローブ(ST-Link, J-Link, CMSIS-DAP)をサポートしている。 Shuntaro Nakanishi 組み込み開発におけるデバッガ 2025-09-03 17 / 17