mirror of
				https://github.com/go-delve/delve.git
				synced 2025-10-31 18:57:18 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			856 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			856 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package frame
 | |
| 
 | |
| import (
 | |
| 	"io/ioutil"
 | |
| 	"os"
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestFDEForPC(t *testing.T) {
 | |
| 	fde1 := &FrameDescriptionEntry{begin: 100, end: 200}
 | |
| 	fde2 := &FrameDescriptionEntry{begin: 50, end: 99}
 | |
| 	fde3 := &FrameDescriptionEntry{begin: 0, end: 49}
 | |
| 	fde4 := &FrameDescriptionEntry{begin: 201, end: 245}
 | |
| 
 | |
| 	tree := NewFrameIndex()
 | |
| 	tree.Put(fde1)
 | |
| 	tree.Put(fde2)
 | |
| 	tree.Put(fde3)
 | |
| 	tree.Put(fde4)
 | |
| 
 | |
| 	node, ok := tree.Find(Addr(35))
 | |
| 	if !ok {
 | |
| 		t.Fatal("Could not find FDE")
 | |
| 	}
 | |
| 
 | |
| 	if node != fde3 {
 | |
| 		t.Fatal("Got incorrect fde")
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func BenchmarkFDEForPC(b *testing.B) {
 | |
| 	f, err := os.Open("testdata/frame")
 | |
| 	if err != nil {
 | |
| 		b.Fatal(err)
 | |
| 	}
 | |
| 	defer f.Close()
 | |
| 
 | |
| 	data, err := ioutil.ReadAll(f)
 | |
| 	if err != nil {
 | |
| 		b.Fatal(err)
 | |
| 	}
 | |
| 	fdes := Parse(data)
 | |
| 
 | |
| 	for i := 0; i < b.N; i++ {
 | |
| 		// bench worst case, exhaustive search
 | |
| 		_, _ = fdes.FDEForPC(0x455555555)
 | |
| 	}
 | |
| }
 | 
