delve/_fixtures/testtracefns.go
Archana Ravindar 89123a0000
pkg/terminal,service/debugger: Support to add a new suboption --follow-calls to trace subcommand (#3594)
* rebasing on master to implement --followcalls

* in progress changes to enable --followcalls

* rebase to master: modified function to add children to funcs array

* modify main traversal loop

* added tests to check different scenarios

* added tests to check different scenarios

* added tests to check different scenarios

* add test to check for overlapping regular expression

* modified type of strings array as a return only

* changed depth to a simple integer instead of a global map

* avoid calling traverse on recursive calls

* Added tests for various call graphs to test trace followfuncs

* Added tests for various call graphs to test trace followfuncs

* Added tests for various call graphs to test trace followfuncs

* made auxillary changes for build to go through for new option follow-calls

* Add support to print depth of the function calls as well

* Added two sample output files for checking

* Bypass morestack_noctxt in output for verification testing

* Corrected newline error by adding newlines only if the line does not match morestack_noctxt

* Added more tests

* Cleanup

* Updated documentation

* fixed error message in fmt.Errorf

* Fixed result of Errorf not used error

* Addressing review comments to fix depth reporting and other issues

* dont invoke stacktrace if tracefollowcalls is enabled, compute depth from main regex root symbol than main.main

* Addressing a part of review comments

* Added changes to allow deferred functions to be picked up for tracing

* Fix issue to avoid printing stack for a simple trace option

* Moving most tests to integration2_test.go and keeping only one in dlv_test.go

* Moving most tests to integration2_test.go and keeping only one in dlv_test.go

* Adding panic-defer test case

* Moved rest of the tests to integration2_test.go

* addressing review comments: folding Functions and FunctionsDeep, reducing branches by using depth prefix, wrap using %w and other comments

* Optimize traversal and parts of printing trace point function and modify trace output layout
and adjust tests accordingly

* Resolved error occurring due to staticcheck

* Implemented traversal algorithm using breadth first search

* Addressing review comments on the breadth first search implementation and
other comments

* Inline filterRuntimeFuncs and remove duplicate initialization
2024-06-12 12:35:48 -07:00

82 lines
830 B
Go

package main
import "fmt"
func D(i int) int {
return i * i * i
}
func C(i int) int {
return D(i+10) + 20
}
func B(i int) int {
return i * D(i)
}
func A(i int) int {
d := 10 + B(i)
return d + C(i)
}
func second(i int) int {
if i > 0 {
return first(i - 1)
} else {
return 0
}
}
func first(n int) int {
if n <= 1 {
return n
} else {
return second(n - 3)
}
}
func callmed(i int) int {
return i * i * i
}
func callmee(i int) int {
return i + 20
}
func callme2(i int) int {
d := callmee(i) + 40
return d + callmed(i)
}
func callme(i int) int {
return 10 + callme2(i)
}
func F0() {
defer func() {
recover()
}()
F1()
}
func F1() {
F2()
}
func F2() {
F3()
}
func F3() {
F4()
}
func F4() {
panic("blah")
}
func main() {
j := 0
j += A(2)
j += first(6)
j += callme(2)
fmt.Println(j)
F0()
}