3

I want to analyze runtime behavior of the application with software profiling. As far as I know there are two basic types of profiling technique. First is Sample based profiling and second is Instrumentation. Can somebody please tell me which one should I use ? I want to analyze behavior of single (java) application and not behavior of one application with other. I am not concerned about the performance related issues like cpu cycle time, memory allocation etc. Please suggest some tools also which can help me.

I would really appreciate any help regarding this.

Thank you.

ChristopheD
  • 112,638
  • 29
  • 165
  • 179
Ragini
  • 1,509
  • 7
  • 28
  • 42
  • What do you mean by behavior, if you are not interested about performance and memory usage? – assylias Apr 25 '12 at 14:30
  • Basically I want test how the behavior of the application differs in case of manipulation in application by an attacker. For example Calling context Tree can describe the applications behavior to some extent. There may be some other methods also. – Ragini Apr 25 '12 at 14:42
  • From what I understand, calling context trees are similar to control flow graphs. What exactly are you looking to do? Do you want to see how your program behaves normally versus how it behaves while being exploited? – viking Apr 25 '12 at 18:10
  • @viking Yes, I want to see exactly what u said...Is call graph or Calling context tree suitable for it ? or there exist some other way ? – Ragini Apr 26 '12 at 09:04
  • 1
    I'm not sure why this was closed as not constructive. @Ragini I agree with Ingo below, this type of analysis will produce a huge amount of data. I'd recommend looking into malware behavioral analysis. Since you are working on a single program, focus on the finer grained stuff instead of before/after snapshots of system. – viking Apr 26 '12 at 19:47
  • @viking Thanks for ur inputs..but could u pl specify what do u exactly mean by finer grained stuff with respect to application behavior ? – Ragini Apr 27 '12 at 09:06

1 Answers1

1

If you're interested in control flow, sampling is not appropriate (it's great for finding performance bottlenecks). Only instrumentation can provide data for control flow.

Recording method-level chronological data for an application will result in a huge amount of data unless you carefully define which classes should be instrumented.

JProfiler has a call tracer view that may be suitable for your purpose, also see this question.

Disclaimer: My company develops JProfiler.

Community
  • 1
  • 1
Ingo Kegel
  • 46,523
  • 10
  • 71
  • 102
  • From the link for JProfiler u gave, it seems that it is paid. Could u pl suggest some good opensource java profilers ? I would be interested in call graph provided by the profiler. – Ragini May 08 '12 at 09:59