使用-g标志编译C/C++代码将在生成的二进制文件中生成调试信息。特别是,源代码与二进制代码之间存在映射:
add: file format elf64-x86-64
Disassembly of section .text:
0000000000000000 <add>:
int add(int a, int b) {
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: 89 7d fc
我有以下java代码片段
while (condition1){
switch (someinteger){
case 1:
if(condition2) continue;
// other stuff here
break;
// other cases here
}
}
一切都很好。当我生成一个类文件,然后使用免费工具(JD-gui)对其进行反编译时,我得到了以下代码。
while (condition1){
switch (someinteger){
出于好奇,我刚刚使用 Decompiler以及使用CAVAJ ( Java为1.7 )解压缩了下面的代码,这里是正常的源代码:
byte a = 10;
a = (byte) (a +1);
byte b = 10;
b = b++;
byte c = 10;
c +=c;
System.out.printf("a=%d \t b=%d \t c=%d\n",a,b,c);
将输出显示为:a=11 b=10 c=20。
这是解压缩的一个:
byte a = 10;
a++;
byte b