当前位置: 首页>>代码示例>>Java>>正文


Java DebugItem类代码示例

本文整理汇总了Java中org.jf.dexlib2.iface.debug.DebugItem的典型用法代码示例。如果您正苦于以下问题:Java DebugItem类的具体用法?Java DebugItem怎么用?Java DebugItem使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


DebugItem类属于org.jf.dexlib2.iface.debug包,在下文中一共展示了DebugItem类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getDebugItems

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public Iterable<? extends DebugItem> getDebugItems() {
    if (fixInstructions) {
        fixInstructions();
    }
    return Iterables.concat(
            Iterables.transform(instructionList, new Function<MethodLocation, Iterable<? extends DebugItem>>() {
                @Nullable
                @Override
                public Iterable<? extends DebugItem> apply(@Nullable MethodLocation input) {
                    assert input != null;
                    if (fixInstructions) {
                        throw new IllegalStateException("This iterator was invalidated by a change to"
                                + " this MutableMethodImplementation.");
                    }
                    return input.getDebugItems();
                }
            }));
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:21,代码来源:BuilderMutableMethodImplementation.java

示例2: getSourceFileLine

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Override
protected int getSourceFileLine() {
	// Parse debug information lazily.
	if (sourceFileMethod != null) {
		MethodImplementation mi = sourceFileMethod.getImplementation();
		if (mi != null) {
			for (DebugItem di : mi.getDebugItems()) {
				if (di instanceof LineNumber) {
					sourceFileLine = ((LineNumber) di).getLineNumber();
					break;
				}
				if (di instanceof SetSourceFile) {
					// TODO: Support this type of debug item.
					break;
				}
			}
		}
		sourceFileMethod = null;
	}
	return sourceFileLine;
}
 
开发者ID:DexPatcher,项目名称:dexpatcher-tool,代码行数:22,代码来源:MethodSetPatcher.java

示例3: of

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
public static ImmutableDebugItem of(DebugItem debugItem) {
    if (debugItem instanceof ImmutableDebugItem) {
        return (ImmutableDebugItem) debugItem;
    }
    switch (debugItem.getDebugItemType()) {
        case DebugItemType.START_LOCAL:
            return ImmutableStartLocal.of((StartLocal) debugItem);
        case DebugItemType.END_LOCAL:
            return ImmutableEndLocal.of((EndLocal) debugItem);
        case DebugItemType.RESTART_LOCAL:
            return ImmutableRestartLocal.of((RestartLocal) debugItem);
        case DebugItemType.PROLOGUE_END:
            return ImmutablePrologueEnd.of((PrologueEnd) debugItem);
        case DebugItemType.EPILOGUE_BEGIN:
            return ImmutableEpilogueBegin.of((EpilogueBegin) debugItem);
        case DebugItemType.SET_SOURCE_FILE:
            return ImmutableSetSourceFile.of((SetSourceFile) debugItem);
        case DebugItemType.LINE_NUMBER:
            return ImmutableLineNumber.of((LineNumber) debugItem);
        default:
            throw new ExceptionWithContext("Invalid debug item type: %d", debugItem.getDebugItemType());
    }
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:25,代码来源:ImmutableDebugItem.java

示例4: internDebug

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
private void internDebug(@Nonnull Method method) {
    for (MethodParameter param : method.getParameters()) {
        String paramName = param.getName();
        if (paramName != null) {
            stringPool.intern(paramName);
        }
    }

    MethodImplementation methodImpl = method.getImplementation();
    if (methodImpl != null) {
        for (DebugItem debugItem : methodImpl.getDebugItems()) {
            switch (debugItem.getDebugItemType()) {
                case DebugItemType.START_LOCAL:
                    StartLocal startLocal = (StartLocal) debugItem;
                    stringPool.internNullable(startLocal.getName());
                    typePool.internNullable(startLocal.getType());
                    stringPool.internNullable(startLocal.getSignature());
                    break;
                case DebugItemType.SET_SOURCE_FILE:
                    stringPool.internNullable(((SetSourceFile) debugItem).getSourceFile());
                    break;
            }
        }
    }
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:26,代码来源:ClassPool.java

示例5: getDebugItems

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public Iterable<? extends DebugItem> getDebugItems() {
    if (fixInstructions) {
        fixInstructions();
    }
    return Iterables.concat(
            Iterables.transform(instructionList, new Function<MethodLocation, Iterable<? extends DebugItem>>() {
                @Nullable
                @Override
                public Iterable<? extends DebugItem> apply(@Nullable MethodLocation input) {
                    assert input != null;
                    if (fixInstructions) {
                        throw new IllegalStateException("This iterator was invalidated by a change to" +
                                " this MutableMethodImplementation.");
                    }
                    return input.getDebugItems();
                }
            }));
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:21,代码来源:MutableMethodImplementation.java

示例6: convertDebugItem

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) {
    switch (debugItem.getDebugItemType()) {
        case DebugItemType.START_LOCAL: {
            StartLocal startLocal = (StartLocal) debugItem;
            return new BuilderStartLocal(startLocal.getRegister(),
                    (StringReference) convertReference(startLocal.getNameReference()),
                    (TypeReference) convertReference(startLocal.getTypeReference()),
                    (StringReference) convertReference(startLocal.getSignatureReference()));
        }
        case DebugItemType.END_LOCAL: {
            EndLocal endLocal = (EndLocal) debugItem;
            return new BuilderEndLocal(endLocal.getRegister());
        }
        case DebugItemType.RESTART_LOCAL: {
            RestartLocal restartLocal = (RestartLocal) debugItem;
            return new BuilderRestartLocal(restartLocal.getRegister());
        }
        case DebugItemType.PROLOGUE_END:
            return new BuilderPrologueEnd();
        case DebugItemType.EPILOGUE_BEGIN:
            return new BuilderEpilogueBegin();
        case DebugItemType.LINE_NUMBER: {
            LineNumber lineNumber = (LineNumber) debugItem;
            return new BuilderLineNumber(lineNumber.getLineNumber());
        }
        case DebugItemType.SET_SOURCE_FILE: {
            SetSourceFile setSourceFile = (SetSourceFile) debugItem;
            return new BuilderSetSourceFile(
                    (StringReference) convertReference(setSourceFile.getSourceFileReference())
            );
        }
        default:
            throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
    }
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:37,代码来源:BuilderMutableMethodImplementation.java

示例7: reMethodImpl

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Override
protected MethodImplementation reMethodImpl(MethodImplementation methodImplementation) {
    if (methodImplementation == null){
        return null;
    }
    Iterable<? extends Instruction> instructions = methodImplementation.getInstructions();
    Iterable<? extends DebugItem> debugItems = methodImplementation.getDebugItems();
    List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks = methodImplementation.getTryBlocks();
    return new ImmutableMethodImplementation(methodImplementation.getRegisterCount(), reInstructions(instructions), reTryCatchBlock(methodImplementation.getTryBlocks()), reDebugItem(methodImplementation.getDebugItems()));

}
 
开发者ID:alibaba,项目名称:atlas,代码行数:12,代码来源:MethodImplReIClassDef.java

示例8: ImmutableMethodImplementation

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public ImmutableMethodImplementation(int registerCount,
                                     @Nullable Iterable<? extends Instruction> instructions,
                                     @Nullable List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
                                     @Nullable Iterable<? extends DebugItem> debugItems) {
    this.registerCount = registerCount;
    this.instructions = ImmutableInstruction.immutableListOf(instructions);
    this.tryBlocks = ImmutableTryBlock.immutableListOf(tryBlocks);
    this.debugItems = ImmutableDebugItem.immutableListOf(debugItems);
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:10,代码来源:ImmutableMethodImplementation.java

示例9: ImmutableMethodImplementation

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public ImmutableMethodImplementation(int registerCount,
                                      Iterable<? extends Instruction> instructions,
                                      List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
                                      Iterable<? extends DebugItem> debugItems) {
    this.registerCount = registerCount;
    this.instructions = ImmutableInstruction.immutableListOf(instructions);
    this.tryBlocks = ImmutableTryBlock.immutableListOf(tryBlocks);
    this.debugItems = ImmutableDebugItem.immutableListOf(debugItems);
}
 
开发者ID:AndreJCL,项目名称:JCL,代码行数:10,代码来源:ImmutableMethodImplementation.java

示例10: BasicMethodImplementation

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
public BasicMethodImplementation(
		int registerCount,
		Iterable<? extends Instruction> instructions,
		List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks,
		Iterable<? extends DebugItem> debugItems
) {
	this.registerCount = registerCount;
	this.instructions = instructions;
	this.tryBlocks = tryBlocks;
	this.debugItems = debugItems;
}
 
开发者ID:DexPatcher,项目名称:dexpatcher-tool,代码行数:12,代码来源:BasicMethodImplementation.java

示例11: getDebugItems

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nullable
@Override
public Iterable<? extends DebugItem> getDebugItems(@Nonnull PoolMethod method) {
    MethodImplementation impl = method.getImplementation();
    if (impl != null) {
        return impl.getDebugItems();
    }
    return null;
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:10,代码来源:ClassPool.java

示例12: getDebugItems

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nullable
@Override
public Iterable<? extends DebugItem> getDebugItems(@Nonnull BuilderMethod builderMethod) {
    MethodImplementation impl = builderMethod.getImplementation();
    if (impl == null) {
        return null;
    }
    return impl.getDebugItems();
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:10,代码来源:BuilderClassPool.java

示例13: rewrite

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
@Override
public DebugItem rewrite(@Nonnull DebugItem value) {
    switch (value.getDebugItemType()) {
        case DebugItemType.START_LOCAL:
            return new RewrittenStartLocal((StartLocal) value);
        case DebugItemType.END_LOCAL:
            return new RewrittenEndLocal((EndLocal) value);
        case DebugItemType.RESTART_LOCAL:
            return new RewrittenRestartLocal((RestartLocal) value);
        default:
            return value;
    }
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:15,代码来源:DebugItemRewriter.java

示例14: convertDebugItem

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
@Nonnull
private BuilderDebugItem convertDebugItem(@Nonnull DebugItem debugItem) {
    switch (debugItem.getDebugItemType()) {
        case DebugItemType.START_LOCAL: {
            StartLocal startLocal = (StartLocal) debugItem;
            return new BuilderStartLocal(startLocal.getRegister(), startLocal.getNameReference(),
                    startLocal.getTypeReference(), startLocal.getSignatureReference());
        }
        case DebugItemType.END_LOCAL: {
            EndLocal endLocal = (EndLocal) debugItem;
            return new BuilderEndLocal(endLocal.getRegister());
        }
        case DebugItemType.RESTART_LOCAL: {
            RestartLocal restartLocal = (RestartLocal) debugItem;
            return new BuilderRestartLocal(restartLocal.getRegister());
        }
        case DebugItemType.PROLOGUE_END:
            return new BuilderPrologueEnd();
        case DebugItemType.EPILOGUE_BEGIN:
            return new BuilderEpilogueBegin();
        case DebugItemType.LINE_NUMBER: {
            LineNumber lineNumber = (LineNumber) debugItem;
            return new BuilderLineNumber(lineNumber.getLineNumber());
        }
        case DebugItemType.SET_SOURCE_FILE: {
            SetSourceFile setSourceFile = (SetSourceFile) debugItem;
            return new BuilderSetSourceFile(setSourceFile.getSourceFileReference());
        }
        default:
            throw new ExceptionWithContext("Invalid debug item type: " + debugItem.getDebugItemType());
    }
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:33,代码来源:MutableMethodImplementation.java

示例15: buildLocalInfo

import org.jf.dexlib2.iface.debug.DebugItem; //导入依赖的package包/类
private static LocalInfo buildLocalInfo(DexBackedMethod dexBackedMethod) {

        LocalInfo info = new LocalInfo();

        int insSize = getInsSize(dexBackedMethod);

        List<? extends MethodParameter> parameters = dexBackedMethod.getParameters();

        int argReg = getRegisterSize(dexBackedMethod) - insSize;//reg = resiter - ins
        //                        System.out.println("registerCount:" + methodImplementation.getRegisterCount());

        boolean isStatic = AccessFlags.STATIC.isSet(dexBackedMethod.getAccessFlags());

        if (!isStatic) {
            info.setName(argReg, "this");
            argReg++;
        }

        for (MethodParameter p : parameters) {
            int reg = argReg;

            if ("D".equals(p.getType()) || "J".equals(p.getType())) {
                argReg += 2;
            } else {
                argReg += 1;
            }
            if (!Strings.isNullOrEmpty(p.getName())) {
                info.setName(reg, p.getName());
            }
            //            System.out.println("pararms:====" + p.getName() + ",paramRegister:" + reg);
        }
        DexBackedMethodImplementation implementation = dexBackedMethod.getImplementation();
        if (implementation != null) {
            Iterable<? extends DebugItem> debugItems = implementation.getDebugItems();
            for (DebugItem debugItem : debugItems) {
                if (debugItem.getDebugItemType() == DebugItemType.START_LOCAL) {
                    //                System.out.println(
                    //                        "debugItemStartLocal:====" + ((ImmutableStartLocal) debugItem).getName() + ",register:"
                    //                                + ((ImmutableStartLocal) debugItem).getRegister());
                    info.setName(((ImmutableStartLocal) debugItem).getRegister(),
                            ((ImmutableStartLocal) debugItem).getName());
                }
                if (debugItem.getDebugItemType() == DebugItemType.START_LOCAL_EXTENDED) {
                    //                System.out.println(
                    //                        "debugItemStartLocalExt:====" + ((ImmutableStartLocal) debugItem).getName() + ",register:"
                    //                                + ((ImmutableStartLocal) debugItem).getRegister());
                    info.setName(((ImmutableStartLocal) debugItem).getRegister(),
                            ((ImmutableStartLocal) debugItem).getName());
                }
            }
        }
        return info;
    }
 
开发者ID:dodola,项目名称:SimpleSmali,代码行数:54,代码来源:BackSmaliMain.java


注:本文中的org.jf.dexlib2.iface.debug.DebugItem类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。