Commit 8db71d4e authored by Russ Cox's avatar Russ Cox

runtime: update comment for Callers

Attempt to clear up confusion about how to turn
the PCs reported by Callers into the file and line
number people actually want.

Fixes #7690.

LGTM=r, chris.cs.guy
R=r, chris.cs.guy
CC=golang-codereviews
https://golang.org/cl/163550043
parent 799da9ce
...@@ -117,11 +117,20 @@ func Caller(skip int) (pc uintptr, file string, line int, ok bool) { ...@@ -117,11 +117,20 @@ func Caller(skip int) (pc uintptr, file string, line int, ok bool) {
return return
} }
// Callers fills the slice pc with the program counters of function invocations // Callers fills the slice pc with the return program counters of function invocations
// on the calling goroutine's stack. The argument skip is the number of stack frames // on the calling goroutine's stack. The argument skip is the number of stack frames
// to skip before recording in pc, with 0 identifying the frame for Callers itself and // to skip before recording in pc, with 0 identifying the frame for Callers itself and
// 1 identifying the caller of Callers. // 1 identifying the caller of Callers.
// It returns the number of entries written to pc. // It returns the number of entries written to pc.
//
// Note that since each slice entry pc[i] is a return program counter,
// looking up the file and line for pc[i] (for example, using (*Func).FileLine)
// will return the file and line number of the instruction immediately
// following the call.
// To look up the file and line number of the call itself, use pc[i]-1.
// As an exception to this rule, if pc[i-1] corresponds to the function
// runtime.sigpanic, then pc[i] is the program counter of a faulting
// instruction and should be used without any subtraction.
func Callers(skip int, pc []uintptr) int { func Callers(skip int, pc []uintptr) int {
// runtime.callers uses pc.array==nil as a signal // runtime.callers uses pc.array==nil as a signal
// to print a stack trace. Pick off 0-length pc here // to print a stack trace. Pick off 0-length pc here
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment