<div style="font-family:SimSun,STSong;font-size:large;;"><div><font size="2"><span style="font-family: Arial Black;">Hi Dean,</span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">Thanks for your last reply. <br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">I compiled "tmux" with `CC=clang CXX=clang++ CXXFLAGS=-fxray-instrument CFLAGS=-fxray-instrument`, and it succeeded.</span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">I installed the binary with `make install` to a local folder, and run it with XRAY_OPTIONS="patch_premain=true:xray_mode=xray-basic:verbosity=1" tmux'. <br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">But after it exited normally, I have no trace generated or any error. And I also used `llvm extract -symbolize` to make sure the binary is instrumented.<br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">What is the cause for it? Does it depend on functions called during the execution? <br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">What environment variables I should use to guarantee there is always a trace log?</span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;">Thank you,</span></font></div><div><font size="2"><span style="font-family: Arial Black;">Yushan<br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"><br></span></font></div><div><font size="2"><span style="font-family: Arial Black;"></span></font></div><font size="2"><span style="font-family: Arial Black;"></span></font><font size="2"><span style="font-family: Arial Black;"></span></font><div><font size="2"><span style="font-family: Arial Black;"><sign signid="0"><div><includetail><div> </div><div style="font:Verdana normal 14px;color:#000;"><div style="font-size: 12px; padding: 2px 0px;">------------------ Original ------------------</div><div style="FONT-SIZE: 12px;background:#efefef;padding:8px;"><div id="menu_sender"><b>From: </b> "Dean Michael Berris"<dean.berris@gmail.com>;</div><div><b>Date: </b> Mon, Jan 21, 2019 01:26 PM</div><div><b>To: </b> ""张雨姗(ZHANG Yushan)-11310380""<zhangys3@mail.sustc.edu.cn>; <wbr></div><div><b>Cc: </b> "llvm-dev"<llvm-dev@lists.llvm.org>; <wbr></div><div><b>Subject: </b> Re: [llvm-dev] [X-ray] How to check successful instrumentation and generate call trace?</div></div><div> </div><div style="position:relative;"><br><br>> On 21 Jan 2019, at 16:16, 张雨姗(ZHANG Yushan)-11310380 via llvm-dev <llvm-dev@lists.llvm.org> wrote:<br>> <br>> Hi all,<br>> <br>> I want to test X-ray performance and compare it with other research tools, so I use Clang 7.0.0 to compile and instrument GNU binutils-2.3.1 with the following commands:<br>> <br>> cd binutils-2.31/<br>> mkdir build<br>> cd build/<br>> CC=$local/clang CXX=$local/clang++ CFLAGS=-fxray-instrument CXXFLAGS=-fxray-instrument ../configure --prefix=/home/zhangysh1995/local<br>> make<br>> <br>> Then I extract instrumentation map with llvm-xray extract addr2line and it returns:<br>> ---<br>> - { id: 1, address: 0x000000000041CD70, function: 0x000000000041CD70, kind: function-enter, always-instrument: false, function-name: '' }<br>> - { id: 1, address: 0x000000000041D026, function: 0x000000000041CD70, kind: function-exit, always-instrument: false, function-name: '' }<br>> - { id: 2, address: 0x000000000041D4F0, function: 0x000000000041D4F0, kind: function-enter, always-instrument: false, function-name: '' }<br>> - { id: 2, address: 0x000000000041DAFA, function: 0x000000000041D4F0, kind: function-exit, always-instrument: false, function-name: '' }<br>> - { id: 3, address: 0x000000000041E570, function: 0x000000000041E570, kind: function-enter, always-in<br>> ......<br>> ......<br>> <br>> Does the map mean that no function is instrumented? Should I change my commands?<br><br>This means that the generated binary already has the instrumentation map. It looks like you also already have the function addresses, which if the binary is not stripped of symbols must have the function names. If you add the `-symbolize` flag to the invocation of `llvm-xray extract` then that should get the function names.<br><br>> BTW, after instrumentation could I run the binary and get trace directly?<br><br>You should be able to enable tracing of instrumented binaries using an environment variables.<br><br>> <br>> Here is the link to current documentation: https://llvm.org/docs/XRay.html<br>> <br><br>In that documentation, it shows the table of options you can set in the XRAY_OPTIONS environment variable:<br><br>http://llvm.org/docs/XRay.html#xray-runtime-library<br><br>In the example at:<br><br>http://llvm.org/docs/XRayExample.html<br><br>You can set:<br><br>XRAY_OPTIONS="patch_premain=true:xray_mode=xray-basic:verbosity=1”<br><br>To get traces.<br><br>Cheers<br><br>-- Dean<br></div></div><!--<![endif]--></includetail></div></sign></span></font></div></div>