Моя go программа загружает pclntab
из исполняемого файла, который прекрасно работает в Linux, но по какой-то причине раздел runtime.pclntab
отсутствует, когда я запускаю его в Windows, даже если все, что я ' мы читаем онлайн, говорит, что он должен присутствовать.
package main
import (
"debug/pe"
"fmt"
"log"
"os"
)
func main() {
exePath, err := os.Executable()
if err != nil {
log.Printf("Error finding executable: %v", err)
return
}
exe, err := pe.Open(exePath)
if err != nil {
log.Printf("Error opening %v: %v", exePath, err)
return
}
defer exe.Close()
for i := 0; i < len(exe.Sections); i++ {
fmt.Printf("SECT %v\n", exe.Sections[i].Name)
}
}
Выходы:
SECT .text
SECT .rdata
SECT .data
SECT .zdebug_abbrev
SECT .zdebug_line
SECT .zdebug_frame
SECT .zdebug_pubnames
SECT .zdebug_pubtypes
SECT .debug_gdb_scripts
SECT .zdebug_info
SECT .zdebug_loc
SECT .zdebug_ranges
SECT .idata
SECT .symtab
Разве pclntab
больше не построен для Windows двоичных файлов? Или я что-то не так делаю?