Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
keyescgm
jadx
提交
99c70872
J
jadx
项目概览
keyescgm
/
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,发现更多精彩内容 >>
未验证
提交
99c70872
编写于
12月 22, 2021
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: use debug line numbers only at fixed offsets (#1315)
上级
35666693
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
41 addition
and
11 deletion
+41
-11
jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers3.java
...va/jadx/tests/integration/debuginfo/TestLineNumbers3.java
+39
-0
jadx-plugins/jadx-dex-input/src/main/java/jadx/plugins/input/dex/sections/debuginfo/DebugInfoParser.java
...plugins/input/dex/sections/debuginfo/DebugInfoParser.java
+2
-11
未找到文件。
jadx-core/src/test/java/jadx/tests/integration/debuginfo/TestLineNumbers3.java
0 → 100644
浏览文件 @
99c70872
package
jadx.tests.integration.debuginfo
;
import
jadx.core.dex.nodes.ClassNode
;
import
jadx.tests.api.IntegrationTest
;
import
jadx.tests.api.extensions.inputs.InputPlugin
;
import
jadx.tests.api.extensions.inputs.TestWithInputPlugins
;
import
static
jadx
.
tests
.
api
.
utils
.
assertj
.
JadxAssertions
.
assertThat
;
public
class
TestLineNumbers3
extends
IntegrationTest
{
public
static
class
TestCls
extends
Exception
{
public
TestCls
(
final
Object
message
)
{
super
((
message
==
null
)
?
""
:
message
.
toString
());
/*
* comment to increase line number in return instruction
* -
* -
* -
* -
* -
* -
* -
* -
* -
* -
*/
}
}
@TestWithInputPlugins
({
InputPlugin
.
DEX
,
InputPlugin
.
JAVA
})
public
void
test
()
{
ClassNode
cls
=
getClassNode
(
TestCls
.
class
);
assertThat
(
cls
).
code
().
containsOne
(
"super(message == null ? \"\" : message.toString());"
);
String
linesMapStr
=
cls
.
getCode
().
getLineMapping
().
toString
();
assertThat
(
linesMapStr
).
isEqualTo
(
"{4=13, 5=14, 6=15}"
);
}
}
jadx-plugins/jadx-dex-input/src/main/java/jadx/plugins/input/dex/sections/debuginfo/DebugInfoParser.java
浏览文件 @
99c70872
...
...
@@ -185,25 +185,16 @@ public class DebugInfoParser {
}
}
}
setSourceLines
(
addr
,
codeSize
,
line
);
return
new
DebugInfo
(
linesMap
,
resultList
);
}
private
int
addrChange
(
int
addr
,
int
addrInc
,
int
line
)
{
int
newAddr
=
addr
+
addrInc
;
int
maxAddr
=
codeSize
-
1
;
newAddr
=
Math
.
min
(
newAddr
,
maxAddr
);
setSourceLines
(
addr
,
newAddr
,
line
);
int
newAddr
=
Math
.
min
(
addr
+
addrInc
,
codeSize
-
1
);
setLine
(
newAddr
,
line
);
return
newAddr
;
}
private
void
setSourceLines
(
int
start
,
int
end
,
int
line
)
{
for
(
int
offset
=
start
+
1
;
offset
<
end
;
offset
++)
{
setLine
(
offset
,
line
);
}
}
private
void
setLine
(
int
offset
,
int
line
)
{
linesMap
.
put
(
offset
,
line
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录