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
30
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
27
Other Decks in Technology
See All in Technology
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
500
「今盗んで、後で解く」に備える ― AWSのポスト量子暗号入門
yama3133
2
280
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
3
21k
[Kiro Meetup #7] Kiro Crew Dive Deep
konippi
0
430
可視化から始めたAI駆動開発_ochi_ver1.01 / AI-Driven Development Starting with Visualization_ver1.01
yayoi_dd
0
110
3人で1000GPU超を統合運用する?マルチクラウド&オンプレを跨ぐ、構築と運用のリアル!
kazukun0716
2
770
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
1
610
顧客の成果創出とプロダクトの成長を 両立するためのFDE
sansantech
PRO
0
520
大阪オフィスに Unitree Go2 がやってきたので Physical AI やってみた
dafujii
0
150
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.8k
【ゲームメーカーズスクランブル2026】『Shadowverse: Worlds Beyond』UIとアニメーションで実現する最高のユーザー体験を叶えるプロトタイピング
cygames
PRO
1
700
AIに賢く動いてもらうためのコンテキスト〜Snowflake女子会 vol.8
snowwmn0824
0
200
Featured
See All Featured
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
270
How to Talk to Developers About Accessibility
jct
2
560
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
410
Tell your own story through comics
letsgokoyo
1
1.1k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
560
4 Signs Your Business is Dying
shpigford
187
23k
The Invisible Side of Design
smashingmag
301
52k
A Tale of Four Properties
chriscoyier
163
24k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
A better future with KSS
kneath
240
18k
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