GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдХреЛрдб рдбреАрдмрдЧ рдХрд░рдирд╛ред рдкрд░рд┐рдЪрдп

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд gc рдЙрдкрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред Gccgo рдиреЗ gdb рд╕рдорд░реНрдерди рдмрдирд╛рдпрд╛ рд╣реИред рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк GDB рдореИрдиреБрдЕрд▓ рд╕реЗ рдкрд░рд╛рдорд░реНрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬрдм рдЖрдк рд▓рд┐рдирдХреНрд╕, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдпрд╛ рдлреНрд░реАрдмреАрдПрд╕рдбреА рдкрд░ рдЬреАрд╕реА рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЧреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдореА рдмрд╛рдпрдиреЗрд░реАрдЬрд╝ рдореЗрдВ DWARFv3 рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ рдЬреЛ рдирд╡реАрдирддрдо GDB рдбрд┐рдмрдЧрд░ (> 7.1) рд▓рд╛рдЗрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдпрд╛ рдбрдВрдк рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рд╣реИред

рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд┐рдВрдХрд░ рдХреЛ '-s' рдлреНрд▓реИрдЧ рдкрд╛рд╕ рдХрд░реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, go build -ldflags "-s" prog.go )ред

рдЬреАрд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдФрд░ рдЪрд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпреЗ рдЕрдиреБрдХреВрд▓рди рдХрднреА-рдХрднреА GDB рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, go рдХрдорд╛рдВрдб рдореЗрдВ -gcflags "-N -l" рдзреНрд╡рдЬ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреАрдмрдЧ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдо рд╕рдВрдЪрд╛рд▓рди



рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд╛рдУ


рдирдпрд╛ GDB рдПрдХреНрд╕рдЯреЗрдВрд╢рди рддрдВрддреНрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдмрд╛рдЗрдирд░реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЯреВрд▓рдХрд┐рдЯ рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬреАрдбреАрдмреА рдХреЛ рдХрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб (рдЬреИрд╕реЗ рдЧреЛрд░рдЖрдЙрдЯреНрд╕) рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╢рдмреНрджрдХреЛрд╢реЛрдВ, рд╕реНрд▓рд╛рдЗрд╕ рдФрд░ рдЪреИрдирд▓реЛрдВ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред


рдпрджрд┐ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ рдпрд╛ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ, рддреЛ рдЧреЛ рд╕реНрд░реЛрдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ src / pkg / runtime / runtime-gdb.py рджреЗрдЦреЗрдВред рдпрд╣ рдХрдИ рд╡рд┐рд╢реЗрд╖ рдЬрд╛рджреВ рдкреНрд░рдХрд╛рд░реЛрдВ ( hash<T,U> ) рдФрд░ рдЪрд░ ( runtime.m рдФрд░ runtime.g ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╡рд░рдг DWARF рдХреЛрдб рдореЗрдВ рд▓рд┐рдВрдХрд░ ( src / cmd / ld / dwarf.c ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ, рддреЛ ' objdump -W 6.out ' objdump -W 6.out рдФрд░ .debug_* рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВред

рдЬреНрдЮрд╛рдд рдореБрджреНрджреЗ


  1. рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рд╕реБрдВрджрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗрд╡рд▓ рдЯрд╛рдЗрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдПред
  2. C рдореЗрдВ рд▓рд┐рдЦреА рдЧрдИ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рдЬрд╛рдирдХрд╛рд░реА рдЧрд╛рдпрдм рд╣реИред
  3. GDB рдХреЛ рдирд╛рдореЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ рдФрд░ "fmt.Print" рдХреЛ "fmt.Print" рд╕рд╛рде рдПрдХ рдЕрд╕рдВрд░рдЪрд┐рдд рд╢рд╛рдмреНрджрд┐рдХ "fmt.Print" рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ "." рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдирд╛ред рдпрд╣ pkg.(*MyType).Meth рд▓рд┐рдП рдФрд░ рднреА рдЕрдзрд┐рдХ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ pkg.(*MyType).Meth ред
  4. рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ main рдкреИрдХреЗрдЬ рдХреЛ рджрд┐рдП рдЧрдП рд╣реИрдВред

Source: https://habr.com/ru/post/In179317/


All Articles