Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
HugeYuan
delve
提交
21dca7ef
D
delve
项目概览
HugeYuan
/
delve
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
delve
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
21dca7ef
编写于
4月 29, 2015
作者:
D
Derek Parker
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Use seperate ID counter for temp breakpoints
上级
19a98fb4
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
21 deletion
+34
-21
proctl/breakpoints.go
proctl/breakpoints.go
+9
-2
proctl/proctl.go
proctl/proctl.go
+19
-18
proctl/threads.go
proctl/threads.go
+6
-1
未找到文件。
proctl/breakpoints.go
浏览文件 @
21dca7ef
...
...
@@ -79,14 +79,21 @@ func (dbp *DebuggedProcess) BreakpointExists(addr uint64) bool {
}
func
(
dbp
*
DebuggedProcess
)
newBreakpoint
(
fn
,
f
string
,
l
int
,
addr
uint64
,
data
[]
byte
,
temp
bool
)
*
BreakPoint
{
dbp
.
breakpointIDCounter
++
var
id
int
if
temp
{
dbp
.
tempBreakpointIDCounter
++
id
=
dbp
.
tempBreakpointIDCounter
}
else
{
dbp
.
breakpointIDCounter
++
id
=
dbp
.
breakpointIDCounter
}
return
&
BreakPoint
{
FunctionName
:
fn
,
File
:
f
,
Line
:
l
,
Addr
:
addr
,
OriginalData
:
data
,
ID
:
dbp
.
breakpointIDCounter
,
ID
:
id
,
Temp
:
temp
,
}
}
...
...
proctl/proctl.go
浏览文件 @
21dca7ef
...
...
@@ -22,24 +22,25 @@ import (
// Struct representing a debugged process. Holds onto pid, register values,
// process struct and process state.
type
DebuggedProcess
struct
{
Pid
int
Process
*
os
.
Process
HWBreakPoints
[
4
]
*
BreakPoint
BreakPoints
map
[
uint64
]
*
BreakPoint
Threads
map
[
int
]
*
ThreadContext
CurrentThread
*
ThreadContext
dwarf
*
dwarf
.
Data
goSymTable
*
gosym
.
Table
frameEntries
frame
.
FrameDescriptionEntries
lineInfo
*
line
.
DebugLineInfo
firstStart
bool
singleStepping
bool
os
*
OSProcessDetails
ast
*
source
.
Searcher
breakpointIDCounter
int
running
bool
halt
bool
exited
bool
Pid
int
Process
*
os
.
Process
HWBreakPoints
[
4
]
*
BreakPoint
BreakPoints
map
[
uint64
]
*
BreakPoint
Threads
map
[
int
]
*
ThreadContext
CurrentThread
*
ThreadContext
dwarf
*
dwarf
.
Data
goSymTable
*
gosym
.
Table
frameEntries
frame
.
FrameDescriptionEntries
lineInfo
*
line
.
DebugLineInfo
firstStart
bool
singleStepping
bool
os
*
OSProcessDetails
ast
*
source
.
Searcher
breakpointIDCounter
int
tempBreakpointIDCounter
int
running
bool
halt
bool
exited
bool
}
// A ManualStopError happens when the user triggers a
...
...
proctl/threads.go
浏览文件 @
21dca7ef
...
...
@@ -84,7 +84,7 @@ func (thread *ThreadContext) CallFn(name string, fn func() error) error {
}
// Set breakpoint at the end of the function (before it returns).
bp
,
err
:=
thread
.
Break
(
f
.
End
-
2
)
bp
,
err
:=
thread
.
Temp
Break
(
f
.
End
-
2
)
if
err
!=
nil
{
return
err
}
...
...
@@ -113,6 +113,11 @@ func (thread *ThreadContext) Break(addr uint64) (*BreakPoint, error) {
return
thread
.
Process
.
setBreakpoint
(
thread
.
Id
,
addr
,
false
)
}
// Set breakpoint using this thread.
func
(
thread
*
ThreadContext
)
TempBreak
(
addr
uint64
)
(
*
BreakPoint
,
error
)
{
return
thread
.
Process
.
setBreakpoint
(
thread
.
Id
,
addr
,
true
)
}
// Clear breakpoint using this thread.
func
(
thread
*
ThreadContext
)
Clear
(
addr
uint64
)
(
*
BreakPoint
,
error
)
{
return
thread
.
Process
.
clearBreakpoint
(
thread
.
Id
,
addr
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录