Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_39073359
jadx
提交
29b64300
J
jadx
项目概览
qq_39073359
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
29b64300
编写于
10月 11, 2022
作者:
J
Jan S
提交者:
GitHub
10月 11, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(gui): multi-threading issue in DebugController fixed (#1701) (PR #1702)
上级
777355e8
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
20 addition
and
12 deletion
+20
-12
jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java
...c/main/java/jadx/gui/device/debugger/DebugController.java
+20
-12
未找到文件。
jadx-gui/src/main/java/jadx/gui/device/debugger/DebugController.java
浏览文件 @
29b64300
...
...
@@ -44,11 +44,12 @@ import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import
jadx.gui.utils.NLS
;
public
final
class
DebugController
implements
SmaliDebugger
.
SuspendListener
,
IDebugController
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
DebugController
.
class
);
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
DebugController
.
class
);
private
static
final
String
ONCREATE_SIGNATURE
=
"onCreate(Landroid/os/Bundle;)V"
;
private
static
final
Map
<
String
,
RuntimeType
>
TYPE_MAP
=
new
HashMap
<>();
private
static
final
RuntimeType
[]
POSSIBLE_TYPES
=
{
RuntimeType
.
OBJECT
,
RuntimeType
.
INT
,
RuntimeType
.
LONG
};
private
static
final
int
DEFAULT_CACHE_SIZE
=
512
;
private
JDebuggerPanel
debuggerPanel
;
private
SmaliDebugger
debugger
;
...
...
@@ -1115,7 +1116,7 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
private
long
thisID
;
public
FrameNode
(
long
threadID
,
SmaliDebugger
.
Frame
frame
)
{
cache
=
new
StringBuilder
(
16
);
cache
=
new
StringBuilder
(
DEFAULT_CACHE_SIZE
);
this
.
frame
=
frame
;
this
.
threadID
=
threadID
;
regNodes
=
Collections
.
emptyList
();
...
...
@@ -1153,7 +1154,7 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
public
void
setSignatures
(
String
clsSig
,
String
mthSig
)
{
this
.
clsSig
=
clsSig
;
this
.
mthSig
=
mthSig
;
this
.
cache
.
delete
(
0
,
this
.
cache
.
length
()
);
resetCache
(
);
}
public
String
getClsSig
()
{
...
...
@@ -1167,7 +1168,7 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
public
void
updateCodeOffset
(
long
codeOffset
)
{
this
.
codeOffset
=
codeOffset
;
if
(
this
.
codeOffset
>
-
1
)
{
this
.
cache
.
delete
(
0
,
this
.
cache
.
length
()
);
resetCache
(
);
}
}
...
...
@@ -1209,27 +1210,34 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
}
}
private
void
resetCache
()
{
// Do not reuse thee existing cache instance as this can result in
// multi-threading access issues in case toString() method is active
this
.
cache
=
new
StringBuilder
(
DEFAULT_CACHE_SIZE
);
}
@Override
public
String
toString
()
{
if
(
cache
.
length
()
==
0
)
{
StringBuilder
sbCache
=
cache
;
if
(
sbCache
.
length
()
==
0
)
{
long
off
=
getCodeOffset
();
if
(
off
<
0
)
{
c
ache
.
append
(
String
.
format
(
"index: %-4d "
,
off
));
sbC
ache
.
append
(
String
.
format
(
"index: %-4d "
,
off
));
}
else
{
c
ache
.
append
(
String
.
format
(
"index: %04x "
,
off
));
sbC
ache
.
append
(
String
.
format
(
"index: %04x "
,
off
));
}
if
(
clsSig
==
null
)
{
c
ache
.
append
(
"clsID: "
).
append
(
frame
.
getClassID
());
sbC
ache
.
append
(
"clsID: "
).
append
(
frame
.
getClassID
());
}
else
{
c
ache
.
append
(
clsSig
).
append
(
"->"
);
sbC
ache
.
append
(
clsSig
).
append
(
"->"
);
}
if
(
mthSig
==
null
)
{
c
ache
.
append
(
" mthID: "
).
append
(
frame
.
getMethodID
());
sbC
ache
.
append
(
" mthID: "
).
append
(
frame
.
getMethodID
());
}
else
{
c
ache
.
append
(
mthSig
);
sbC
ache
.
append
(
mthSig
);
}
}
return
c
ache
.
toString
();
return
sbC
ache
.
toString
();
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录