private static List<CallStackApi> userCallstack = null;
private static String initialFunc = null;
- private static String userFunctionPosition = ""; //$NON-NLS-1$
+ private static String userFunctionBin = null;
private static boolean dropCallTraceLog = false;
pid = null;
initialFunc = null;
userCallstack = null;
+ userFunctionBin = null;
}
public static List<CallStackApi> getUserCallstack() {
if (null == selfSymbol) {
selfSymbol = SymbolManager.addr2func(binPath, selfAddr, isPieBuild,
baseAddr);
+ // FIXME : demangling debug
+ // String prevSelf = selfSymbol;
selfSymbol = SymbolNameDemangler.nameDemangle(selfSymbol);
+ // System.out.println("Demangling in makeCallstack : " + prevSelf
+ // + " to " + selfSymbol);
selfSymbol = getUserFunctionPosition()
+ AnalyzerConstants.CALLSTACK_API_TOKEN_STRING + selfSymbol;
addrMap.put(self, new String(selfSymbol));
if (funcName.isEmpty()) {
continue;
}
+
String[] name = funcName
.split(AnalyzerConstants.CALLSTACK_API_OFFSET_TOKEN);
+
addrMap.put(addr, new String(name[0]));
CallStackApi cas = new CallStackApi(addr, name[0]);
addrList.add(cas);
}
- if (checkUserCall(funcName) && userFunctionPosition.isEmpty()) {
+
+ if (checkUserCall(funcName)
+ && (userFunctionBin == null || userFunctionBin.isEmpty())) {
+ int appType = Integer.parseInt(AnalyzerManager.getProject()
+ .getAppInfo().get(AnalyzerConstants.APP_INFO_APP_TYPE));
String[] name = funcName
.split(AnalyzerConstants.CALLSTACK_API_OFFSET_TOKEN);
String input[] = name[0]
.split(AnalyzerConstants.CALLSTACK_API_TOKEN);
- userFunctionPosition = new String(input[0]);
- System.out.println("set ufp " + userFunctionPosition); //$NON-NLS-1$
+ if (appType != AnalyzerConstants.APP_TYPE_OSP) {
+ userFunctionBin = new String(input[0]);
+ } else {
+ userFunctionBin = new String(input[0] + ".exe");
+ }
+ // System.out.println("set ufp " + userFunctionBin); //$NON-NLS-1$
}
cd.getAddrs().add(addr);
}
}
public static void setUserFunctionPosition(String path) {
- userFunctionPosition = path;
+ userFunctionBin = path;
}
public static String getUserFunctionPosition() {
- return userFunctionPosition;
+ return userFunctionBin;
}
public static boolean checkUserCall(String input) {
import org.tizen.dynamicanalyzer.AnalyzerManager;
import org.tizen.dynamicanalyzer.ColorResources;
import org.tizen.dynamicanalyzer.LogSpliter;
+import org.tizen.dynamicanalyzer.SymbolManager;
+import org.tizen.dynamicanalyzer.SymbolNameDemangler;
import org.tizen.dynamicanalyzer.constants.AnalyzerConstants;
import org.tizen.dynamicanalyzer.constants.LogCenterConstants;
import org.tizen.dynamicanalyzer.model.CallStackData;
String fName = InformationViewLables.CALLSTACK_TABLE_UNKNOWN;
if (apiData.length > 1) {
fName = new String(apiData[1]);
+ } else {
+ String binPath = AnalyzerManager.getProject()
+ .getBinaryPath();
+ boolean isPieBuild = AnalyzerManager.getProject()
+ .isPieBuild();
+ String baseAddr = AnalyzerManager.getProject()
+ .getBaseAddress();
+ String addrStr = Long.toString(addrs.get(i));
+ if (AnalyzerManager.isInBinaryRange(addrStr)) {
+ fName = SymbolManager.addr2func(binPath, addrStr,
+ isPieBuild, baseAddr);
+ fName = SymbolNameDemangler.nameDemangle(fName);
+ }
+ System.out.println(fName + " " + path);
}
if (LogSpliter.checkUserCall(path)) {