Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
組み込み開発におけるデバッガ
Search
Shuntaro
September 05, 2025
Technology
27
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
26
Other Decks in Technology
See All in Technology
GuardDuty 検知対応を DevOps Agent で効率化しようとしている話 / GuardDuty Investigations with DevOps Agent
masahirokawahara
1
350
幾何アルゴリズムで なめらかなピン操作を / iOSDC Japan 2026 / smoothpin
kazumanagano
0
250
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
350
20260906 「AWS運用入門」著者が教える、運用業務への生成AI活用入門
masaruogura
0
260
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
610
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
8
7.7k
Reactの設計論
uhyo
14
7.6k
振り返りこそエンジニアの本領
negima
0
360
V8コントリビュート超入門
riyaamemiya
0
160
omasushiというライブラリを作った
polidog
PRO
0
190
Amazon Quick on DesktopがIAM Identity Centerで動かない理由
yukiogawa
0
150
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
150
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
500
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
We Have a Design System, Now What?
morganepeng
55
8.3k
Test your architecture with Archunit
thirion
2
2.4k
エンジニアに許された特別な時間の終わり
watany
108
250k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
How to train your dragon (web standard)
notwaldorf
97
6.8k
Ethics towards AI in product and experience design
skipperchong
2
370
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
How to make the Groovebox
asonas
2
2.4k
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