英文:
What do these numbers in a stack trace mean?
问题
这些是堆栈跟踪信息,用于调试和定位代码中的错误。以下是对这些词的理解:
0x467a05, 0xc000000180, 0x200000003
:这些是内存地址的表示形式,用于指示在堆栈跟踪中的特定位置。+0x80, +0x18, +0x101
:这些是相对于当前位置的偏移量,用于指示在堆栈跟踪中的特定函数或指令的位置。偏移量可以帮助确定代码执行的位置。
请注意,这些信息通常由开发人员在调试过程中使用,以便更好地理解代码的执行流程和错误发生的位置。
英文:
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
How do you understand these words as follow?
> 0x467a05, 0xc000000180, 0x200000003
> +0x80 +0x18 +0x101
答案1
得分: 7
这些是传递给各种函数的各种参数的原始(计算机指令级别)值。也就是说,括号中的+0x101
是机器码中的程序计数器偏移量。
要理解它们的含义,你必须查看原始的计算机代码,或者使用调试器。调试器使用编译器留下的跟踪信息,将“计算机寄存器%rax
保存了0x467a05
”(或其他值)转换为“变量x保存了值…”(可能是一个字符串值)。
如果你不确定它们代表什么,那就只关注堆栈跟踪中的名称和行号。当你调用运行时代码中的PrintStack
函数时,你正在main.test3
函数的第18行。
英文:
Those are the raw (computer-instruction-level) values of various arguments passed to various functions. Well, that is, the ones in parentheses—the +0x101
is the program counter offset in the machine code.
To make sense of them, you must look at the raw computer code, or use a debugger. Debuggers use trace information that the compiler leaves behind to translate from "computer register %rax
holds 0x467a05
" (or whatever) into "variable x holds value ..." (for some value, maybe a string for instance).
If you're not sure what they represent, concentrate instead just on the names and line numbers in the stack trace. You were in function main.test3
at line 18 when you called function PrintStack
in the runtime code.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论