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
Gunosy.go#3 debug
Search
y_matsuwitter
June 27, 2014
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Gunosy.go#3 debug
debugパッケージの資料になります。
y_matsuwitter
June 27, 2014
More Decks by y_matsuwitter
See All by y_matsuwitter
LLMと共に進化するプロセスを目指して
ymatsuwitter
13
5.1k
Building Products in the LLM Era
ymatsuwitter
11
13k
Product Utilization of Large Language Models Starting Today
ymatsuwitter
3
3.5k
経営・意思・エンジニアリング
ymatsuwitter
23
22k
LLM in 2023 and 2024
ymatsuwitter
8
6.3k
Turbulent Technological Changes and Career Strategies
ymatsuwitter
2
3.2k
LLM in toB Service and Its UX
ymatsuwitter
7
12k
Agent and small LLM validation
ymatsuwitter
7
3.1k
Information management for a culture of speed: The story of Notion and LayerX
ymatsuwitter
4
11k
Other Decks in Programming
See All in Programming
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
470
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
490
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
200
言葉の格闘技のススメ~紙とペンと言葉から始める、キャリアの描き方~
progresscicada
2
140
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
350
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
760
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
410
Claude Code全社展開のためにやったことn選~プラグイン302個・コミッター271人を支えるために~
kenchan
5
1.4k
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
4
1.9k
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
210
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
150
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
220
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
900
Paper Plane (Part 1)
katiecoart
PRO
1
10k
Site-Speed That Sticks
csswizardry
13
1.4k
Leo the Paperboy
mayatellez
8
2.1k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
HDC tutorial
michielstock
2
790
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
Documentation Writing (for coders)
carmenintech
77
5.4k
Un-Boring Meetings
codingconduct
0
380
A designer walks into a library…
pauljervisheath
211
24k
Transcript
EFCVH !Z@NBUTVXJUUFS
EFCVHʹ͍ͭͯ w HPMBOHͷόΠφϦϑΝΠϧͷEFCVHʹඞཁͳπʔ ϧ܈ w ΦϒδΣΫτϑΝΠϧͷύʔεͳͲͷૢ࡞Λߦ͏
ΦϒδΣΫτϑΝΠϧ w ཁHPCVJMEͰग़དྷ্͕Δ࣮ߦϑΝΠϧ w ϓϥοτϑΥʔϜ͝ͱʹ෦ͷ༷͕ҟͳΔ w (P֤ڥʹ߹Θͤͯ$SPTT$PNQJMFՄೳ
ҙ w .BDͰΫϩείϯύΠϧՄೳͳJOTUBMM͢Δͱ͖ CSFXJOTUBMMHPDSPTTDPNQJMFBMM ͰJOTUBMM͍ͯͩ͘͠͞
(PͰѻ͑Δ࣮ߦϑΥʔϚοτ w &-'ʜओʹ6OJYܥ w .BDI0ʜओʹ.BD049 w 1&ʜओʹ8JOEPXT w 1MBOʜ(PWΑΓαϙʔτɺ6OJYޙܧ
ڞ௨༷UZQF'JMF UZQF'JMF GVOD/FX'JMF SJP3FBEFS"U 'JMF FSSPS GVOD0QFO OBNFTUSJOH
'JMF FSSPS GVOD G 'JMF $MPTF FSSPS GVOD G 'JMF %8"3' EXBSG%BUB FSSPS GVOD G 'JMF %ZO4USJOH UBH%ZO5BH <>TUSJOH FSSPS GVOD G 'JMF *NQPSUFE-JCSBSJFT <>TUSJOH FSSPS GVOD G 'JMF *NQPSUFE4ZNCPMT <>*NQPSUFE4ZNCPM FSSPS GVOD G 'JMF 4FDUJPO OBNFTUSJOH 4FDUJPO GVOD G 'JMF 4FDUJPO#Z5ZQF UZQ4FDUJPO5ZQF 4FDUJPO GVOD G 'JMF 4ZNCPMT <>4ZNCPM FSSPS
EFCVHFMG w 6OJY͚࣮ߦϑΝΠϧ w ༷ͳͲ IUUQDBTQBSIB[ZNPPOKQ0QFO#4% BOOFYFMGIUNM
EFCVHNBDIP w .BDͷ࣮ߦϑΝΠϧܗࣜ w 0CKFDUJWF$ॻ͘ਓΑ͘ग़ձ͏ w όάͰ্ख͘ಡΊͳ͔ͬͨΓ͢Δʜ
EFCVHQF w 8JOEPXT͚࣮ߦϑΝΠϧܗࣜ
EFCVHQMBO w QMBO͚όΠφϦͷ3FBEFS w 1MBOͱɺࢄίϯϐϡʔςΟϯάΛࢦͨ͠ 6OJYWͷޙܧ04ʢΒ͍͠ʣ
EFCVHEXBSG w ܕใͳͲͷ༷ʑͳσόοάใΛؚΉΦϒδΣ ΫτϑΝΠϧ w ֤࣮ߦϑΝΠϧʹڞ௨ͯ͠อଘ͞Ε͍ͯΔ w &-'ͱ͍͏໊લʹର߅ͨ͠Β͍͠
ৄ͘͠ w EXBSG IUUQEXBSGTUEPSHEPDEXBSGQEG
EFCVHHPTZN w (PͷTZNCPM-JOFOVNCFSςʔϒϧͷ ΞΫηεΛఏڙ w ֤छ࣮ߦϑΝΠϧΛಡΈࠐΈɺγϯϘϧͱ-*/& ςʔϒϧΛ༻ҙ w ͦͷޙ5BCMFΦϒδΣΫτʹมɺղੳ
ͬͯΈΑ͏ w ίϯύΠϧࡁΈͷ࣮ߦϑΝΠϧ͔Βఆٛ͞ΕͯΔ શͯͷؔͱͦͷҾΛදࣔͯ͠ΈΑ͏
package main ! import ( "debug/elf" "debug/gosym" "fmt" "log" "os"
)
func parse(file string, f *elf.File) *gosym.Table { sec := f.Section(".gosymtab")
symdat, err := sec.Data() defer f.Close() if err != nil { log.Fatalf("reading %s gosymtab: %v", file, err) } pclndat, err := f.Section(".gopclntab").Data() if err != nil { log.Fatalf("reading %s gopclntab: %v", file, err) } ! pcln := gosym.NewLineTable(pclndat, f.Section(".text").Addr) tab, err := gosym.NewTable(symdat, pcln) if err != nil { log.Fatalf("parsing %s gosymtab: %v", file, err) } ! return tab } &-'ܗ͔ࣜΒ(P ͷγϯϘϧΛ୳͢ -JOFUBCMF Λ୳͢ HPTZN5BCMF Λ༻ҙ͢Δ
func main() { fn := os.Args[1] f, err := elf.Open(os.Args[1])
if err != nil { log.Fatal(err) } table := parse(fn, f) ! //func_ := table.LookupFunc("os.Open") ! for _, f := range table.Funcs { fmt.Println(f.Name) for _, p := range f.Params { fmt.Println("\t" + p.Name) } } } -PPLVQ'VOD Λࢀߟʹͨ͠ } ಛఆͷ'VOD Λ୳͢
࣮ߦ݁Ռൈਮ UFYU NBJOQBSTF NBJOdBOPO NBJOG NBJOpMF NBJONBJO NBJOJOJU UZQFIBTI<>JOUFSGBDF\^ NBJOQ
NBJOT NBJOI UZQFFR<>JOUFSGBDF\^ NBJOR NBJOQ NBJOT NBJOFR ࠓճ࡞ͨ͠ ؔ ҎԼ(Pͷ ඪ४͕ฒͿ
ࢀߟ w NFUIBO͞Μͷϒϩά w ͜ͷลͷιʔεΛಡΉͱ͍͍͔͠Εͳ͍ w IUUQHPMBOHPSHTSDQLHEFCVHHPTZN QDMOUBCHP w IUUQHPMBOHPSHTSDQLHEFCVHHPTZN
TZNUBCHP