go - 堆栈跟踪中的这些数字是什么意思?
问题描述
goroutine 1 [running]:
runtime/debug.Stack(0x467a05, 0xc000000180, 0x200000003)
/usr/lib/golang/src/runtime/debug/stack.go:24 +0x80
runtime/debug.PrintStack()
/usr/lib/golang/src/runtime/debug/stack.go:16 +0x18
main.test3()
/tmp/test_stacktrace.go:18 +0x101
您如何理解以下这些词?
0x467a05, 0xc000000180, 0x200000003 +0x80 +0x18 +0x101
解决方案
这些是传递给各种函数的各种参数的原始(计算机指令级)值。好吧,就是括号中的那些——+0x101
是机器代码中的程序计数器偏移量。
要理解它们,您必须查看原始计算机代码或使用调试器。调试器使用编译器留下的跟踪信息将“计算机寄存器%rax
保持0x467a05
”(或其他)转换为“变量 x 保持值......”(对于某些值,例如可能是字符串)。
如果您不确定它们代表什么,请只关注堆栈跟踪中的名称和行号。当您在运行时代码中调用函数main.test3
时,您在第 18 行运行。PrintStack
推荐阅读
- python - Issues with PySpark on Jupyter notebook with .show() DataFrame once it is passed through a function
- r - 使用不断变化的列表重命名 R 数据框中的列的函数
- python - InvalidArgumentError: input_1_1:0 is both fed and fetched
- sql-server - 使用 sp_send_dbmail 发送的邮件将嵌入的图像显示为附件
- vba - 公式中的Excel VBA变量
- r - Eigenvalues of a matrix, assuming symmetry
- php - 获取解析错误,PHP代码中的语法错误
- python - 获取列的“循环滞后”
- batch-file - 如何使文本行的第一部分唯一并批量连接第二部分?
- javascript - 我如何操作一个 javaScript 对象