0
我需要为在Golang中编写的服务器分析一些核心转储文件。但是我无法使用GDB展开堆栈信息(甚至是一些有用的信息)。GDB中的goroutine展开为golang exe文件的核心转储
例如,我有一个main.go,它的代码是:
package main
func main(){
panic("stupid")
}
而且我用的是以下获得核心文件:
ulimit -c unlimited
GOTRACEBACK=crash ./main
然后我在运行gdb main core
。而gdb,像下面这样的东西。
[email protected]:/tmp/crash$ gdb main core
GNU gdb (Ubuntu 7.12.50.20170314-0ubuntu1.1) 7.12.50.20170314-git
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from main...done.
[New LWP 5735]
[New LWP 5736]
[New LWP 5738]
[New LWP 5739]
[New LWP 5737]
Core was generated by `./main'.
Program terminated with signal SIGABRT, Aborted.
#0 runtime.raise() at /usr/lib/go-1.7/src/runtime/sys_linux_amd64.s:110
110 RET
[Current thread is 1 (LWP 5735)]
(gdb) source /usr/share/go-1.7/src/runtime/runtime-gdb.py
Loading Go Runtime support.
(gdb) info goroutines
* 1 running runtime.systemstack_switch
2 waiting runtime.gopark
3 waiting runtime.gopark
(gdb) goroutine 1 bt
Python Exception <class 'gdb.error'> You can't do that without a process to debug.:
Error occurred in Python command: You can't do that without a process to debug.
(gdb) goroutine 1 info r
Python Exception <class 'gdb.error'> You can't do that without a process to debug.:
Error occurred in Python command: You can't do that without a process to debug.
我发现这里issue,但它并没有给我一个解决方案,让任何人都可以告诉我怎么可以检视堆栈跟踪的够程信息核心转储?感谢任何解决方案,谢谢!