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
32
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
32
Other Decks in Technology
See All in Technology
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
430
構造で守らせる データ・法務・セキュリティ・開発チームとつくる AI時代のデータガバナンスとデータ基盤のリアル
legalontechnologies
PRO
2
630
Claude Code をローカルとサーバー上で利用した際の Bedrock 利用料をユーザー単位で一本化してみる
ohorig
0
170
自宅サーバと脆弱性
masakiokuda
1
120
200人の配信コメント、 全部Jevが仕分けます 〜 マサカリガードを作ってみた 〜
katayamatg
1
350
Maestro MCPとClaude Code Skillsによる自律的なE2Eテスト支援
asmz
0
300
Patterns in AI Driven Software Development
akosma
PRO
0
290
AI時代、つくる力を自分たちの手に。 ──電通×KAG、アジャイルとAI駆動開発で挑む開発の変革
yuukiyo
3
400
Jev の中身は50行で再現できる。でも本物との差はどこにあるのか
hisuzuya
0
110
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
7
4.6k
キヨさん、67歳。AIコーディングエージェントに挑む
happysamurai294
0
110
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
800
Featured
See All Featured
For a Future-Friendly Web
brad_frost
184
10k
Building an army of robots
kneath
307
47k
Google's AI Overviews - The New Search
badams
0
1.6k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
47k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1.1k
How to make the Groovebox
asonas
2
2.5k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
Documentation Writing (for coders)
carmenintech
77
5.6k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
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