Skip to content

Instantly share code, notes, and snippets.

@thomasdarimont
Last active August 29, 2015 14:07
Show Gist options
  • Save thomasdarimont/46a3455d7dbd12e5ec95 to your computer and use it in GitHub Desktop.
Save thomasdarimont/46a3455d7dbd12e5ec95 to your computer and use it in GitHub Desktop.
Poor man's guide to run the honest_profiler under OSX.

#Poor man's guide to run honest_profiler on OSX.

I wanted to play a bit with Richard Warburtons interesting new honest_profiler: https://github.com/RichardWarburton/honest-profiler. Since the wiki page: https://github.com/RichardWarburton/honest-profiler/wiki/How-to-build doesn't contain instructions for building the lib with OSX, I gave it a spin - in a hacky way... I couldn't get the cpp unittests to run so I decided to skip them for now... it works anyways ;-)

Install protobuf

brew install protobuf

Create "headers" for "include" dir soft-link in $JAVA_HOME

cd $JAVA_HOME
ln -s include headers

Install UnitTest++ (actually not needed since we tweak the makefile and skip the tests...)

cd $TARGET_UNITTEST_CPP
svn co https://svn.code.sf.net/p/unittest-cpp/code/  unittest-cpp
make clean all

Tweak the makefile by adding

-Wno-error=old-style-cast to GLOBAL_WARNINGS (some jvm*.h have old-style c-pointer casts) ... configure $TARGET_UNITTEST_CPP or ... comment out the "test" target.

Build the thing

mvn package -DskipTests=true

After the build has completed you should have the necessary bits ready to follow the instrunctions: https://github.com/RichardWarburton/honest-profiler/wiki/How%20to%20Run.

If you want to use the honest_profiler in a maven build (for a "quick" test) all you have to do is to configure the appropriate java agent via:

<build>
  <plugins>
    <plugin>
	  <groupId>org.apache.maven.plugins</groupId>
	  <artifactId>maven-surefire-plugin</artifactId>
	  <configuration>
	    <argLine>-agentpath:/Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/build/liblagent.so</argLine>
	  </configuration>
    </plugin>
  </plugins>
</build>

After a mvn test you should find a file called log.hpl in your working directory.

You can then use one of the 3 "frontends" to view the profiler log.

Here is an example for the ConsoleEntry, to be run in the honest_profiler directory.

java -cp $JAVA_HOME/lib/tools.jar:target/honest-profiler.jar com.insightfullogic.honest_profiler.delivery.console.ConsoleEntry -log /Users/tom/Documents/dev/repos/spring/spring-data-examples/rest/starbucks/log.hpl -filter "class: org.springframework.data"

If you want to run the JavaFX version just run:

java -cp $JAVA_HOME/lib/tools.jar:target/honest-profiler.jar com.insightfullogic.honest_profiler.delivery.javafx.JavaFXEntry

I didn't try the Web "frontend" yet.

The build output should look similar to:
```
tom@gauss ~/Documents/dev/repos/RichardWarburton/honest-profiler (master●●)$ mvn package -DskipTests=true
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for com.insightfullogic:honest-profiler:jar:1.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.version' for org.codehaus.mojo:build-helper-maven-plugin is missing. @ line 116, column 21
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Honest Profiler 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- build-helper-maven-plugin:1.9.1:add-source (default) @ honest-profiler ---
[INFO] Source directory: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/src/main/java added.
[INFO] Source directory: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/src/main/webapp added.
[INFO]
[INFO] --- maven-protoc-plugin:0.2-HPS-2:compile (default) @ honest-profiler ---
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ honest-profiler ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 12 resources
[INFO] Copying 5 resources
[INFO] Copying 1 resource
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ honest-profiler ---
[INFO] Compiling 6 source files to /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/classes
[INFO]
[INFO] --- exec-maven-plugin:1.1:exec (make-compile) @ honest-profiler ---
[INFO] echo -DTARGET_RT_MAC_CFM=0 -std=c++11 -DTARGET_RT_MAC_CFM=0 -fdiagnostics-show-option -fno-omit-frame-pointer -fno-strict-aliasing -funsigned-char -fno-asynchronous-unwind-tables -msse2 -g -D__STDC_FORMAT_MACROS -Weverything -Wno-c++98-compat-pedantic -Wno-padded -Wno-missing-prototypes -Wno-weak-vtables -Wno-global-constructors -Wall -Werror -Wformat-security -Wno-char-subscripts -Wno-sign-compare -Wno-strict-overflow -Wwrite-strings -Wnon-virtual-dtor -Woverloaded-virtual -Wno-error=old-style-cast -O2
[INFO] -DTARGET_RT_MAC_CFM=0 -std=c++11 -DTARGET_RT_MAC_CFM=0 -fdiagnostics-show-option -fno-omit-frame-pointer -fno-strict-aliasing -funsigned-char -fno-asynchronous-unwind-tables -msse2 -g -D__STDC_FORMAT_MACROS -Weverything -Wno-c++98-compat-pedantic -Wno-padded -Wno-missing-prototypes -Wno-weak-vtables -Wno-global-constructors -Wall -Werror -Wformat-security -Wno-char-subscripts -Wno-sign-compare -Wno-strict-overflow -Wwrite-strings -Wnon-virtual-dtor -Woverloaded-virtual -Wno-error=old-style-cast -O2
[INFO] clang++ -DTARGET_RT_MAC_CFM=0 -std=c++11 -DTARGET_RT_MAC_CFM=0 -fdiagnostics-show-option -fno-omit-frame-pointer -fno-strict-aliasing -funsigned-char -fno-asynchronous-unwind-tables -msse2 -g -D__STDC_FORMAT_MACROS -Weverything -Wno-c++98-compat-pedantic -Wno-padded -Wno-missing-prototypes -Wno-weak-vtables -Wno-global-constructors -Wall -Werror -Wformat-security -Wno-char-subscripts -Wno-sign-compare -Wno-strict-overflow -Wwrite-strings -Wnon-virtual-dtor -Woverloaded-virtual -Wno-error=old-style-cast -O2 -shared -o build/liblagent.so \
[INFO] -Bsymbolic build/agent.pic.o build/circular_queue.pic.o build/log_writer.pic.o build/processor.pic.o build/profiler.pic.o -ldl -lboost_iostreams
[INFO]
[INFO] --- maven-protoc-plugin:0.2-HPS-2:testCompile (default) @ honest-profiler ---
[INFO] /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/src/test/proto does not exist. Review the configuration or consider disabling the plugin.
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ honest-profiler ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 3 resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ honest-profiler ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ honest-profiler ---
[INFO] Tests are skipped.
[INFO]
[INFO] --- exec-maven-plugin:1.1:exec (make-test) @ honest-profiler ---
[INFO] skipping execute as per configuraion
[INFO]
[INFO] --- exec-maven-plugin:1.1:exec (npm-test) @ honest-profiler ---
[INFO] skipping execute as per configuraion
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ honest-profiler ---
[INFO] Building jar: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler-1.0-SNAPSHOT.jar
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (jar-file) @ honest-profiler ---
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] com/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/LICENSE already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/com.fasterxml.jackson.core/ already added, skipping
[INFO] com/ already added, skipping
[INFO] com/fasterxml/ already added, skipping
[INFO] com/fasterxml/jackson/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/LICENSE already added, skipping
[INFO] META-INF/NOTICE already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/com.fasterxml.jackson.core/ already added, skipping
[INFO] META-INF/services/ already added, skipping
[INFO] com/ already added, skipping
[INFO] com/fasterxml/ already added, skipping
[INFO] com/fasterxml/jackson/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] ch/ already added, skipping
[INFO] ch/qos/ already added, skipping
[INFO] ch/qos/logback/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/ch.qos.logback/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] org/slf4j/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] org/ already added, skipping
[INFO] Building jar: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler.jar
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] com/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/LICENSE already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/com.fasterxml.jackson.core/ already added, skipping
[INFO] com/ already added, skipping
[INFO] com/fasterxml/ already added, skipping
[INFO] com/fasterxml/jackson/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/LICENSE already added, skipping
[INFO] META-INF/NOTICE already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/com.fasterxml.jackson.core/ already added, skipping
[INFO] META-INF/services/ already added, skipping
[INFO] com/ already added, skipping
[INFO] com/fasterxml/ already added, skipping
[INFO] com/fasterxml/jackson/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] ch/ already added, skipping
[INFO] ch/qos/ already added, skipping
[INFO] ch/qos/logback/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/maven/ch.qos.logback/ already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] org/ already added, skipping
[INFO] org/slf4j/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] META-INF/MANIFEST.MF already added, skipping
[INFO] META-INF/ already added, skipping
[INFO] META-INF/maven/ already added, skipping
[INFO] org/ already added, skipping
[WARNING] Configuration options: 'appendAssemblyId' is set to false, and 'classifier' is missing.
Instead of attaching the assembly file: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler.jar, it will become the file for main project artifact.
NOTE: If multiple descriptors or descriptor-formats are provided for this project, the value of this file will be non-deterministic!
[WARNING] Replacing pre-existing project main-artifact file: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler-1.0-SNAPSHOT.jar
with assembly file: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler.jar
[INFO]
[INFO] --- maven-assembly-plugin:2.2-beta-5:single (zip-file) @ honest-profiler ---
[INFO] Reading assembly descriptor: src/assembly/zip.xml
[INFO] Building zip: /Users/tom/Documents/dev/repos/RichardWarburton/honest-profiler/target/honest-profiler.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 5.228 s
[INFO] Finished at: 2014-10-21T15:09:59+01:00
[INFO] Final Memory: 30M/319M
[INFO] ------------------------------------------------------------------------
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment