鱼与熊掌无法兼得
暂时没有找到调用栈中,同时显示 go 、 c 相关函数
但是,发现 go 程序因 cgo 抛异常 crash 时,可以分别捕获各自的函数调用栈
go 调用栈
go 程序 crash 时,会向 stderr 打印所有 go 协程调用栈信息
因此只要捕获这些信息到文件即可
然后用关键字cgocall
定位日志
c 调用栈
可以用 gdb 直接从 coredump 文件中获取
例子
本人简单写了一个测试例子:
github: https://github.com/fananchong/test_cgo_coredump
后记
鱼与熊掌可以兼得
github: https://github.com/fananchong/test_cgo_coredump 中已经更新最新的,完美捕获 core 文件