<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Hi,<div><br></div><div>I made a script for lldb last year that allowed me to plot a custom object as a curve from Xcode’s lldb prompt. Worked very well for a year, but no more. Has anything changed in the EvaluateExpression syntax? Are there linker options I need to activate in my target c++ program?</div><div><br></div><div>Thanks for any help,</div><div><br></div><div>Niels</div><div><br></div><div><br></div><div>Here's the script, it outputs: </div><div><br></div><div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> - DEBUG - res is No value</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> - DEBUG - fname is No value</div><div style="margin: 0px; font-size: 11px; font-family: Menlo;"> - DEBUG - error is error: <NULL></div></div><div><br></div><div><br></div><div><div>import lldb</div><div>import commands</div><div>import optparse</div><div>import shlex</div><div>import logging</div><div><br></div><div>def plot(debugger, command, result, dict):</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>command_args = shlex.split(command)</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>usage = "usage: %prog objectName "</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>description=‘''plot'''</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>parser = optparse.OptionParser(description=description, prog='plot',usage=usage)</div><div><span class="Apple-tab-span" style="white-space: pre;">   </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>try:</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>(options, args) = parser.parse_args(command_args)</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>except:</div><div><span class="Apple-tab-span" style="white-space:pre">              </span>print '"plot" exception'</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>return</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>la = len(args)</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>print 'len args = %d' % la</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>if len(args) == 1:</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>ecom = “MyNamespace::MyClass::MyStaticPlotFunction(%s)" % args[0]</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>res = lldb.frame.EvaluateExpression(ecom, 1)</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>fname = lldb.frame.EvaluateExpression("MyNamespace::MyClass::GetStaticPlotFileName()")</div><div><span class="Apple-tab-span" style="white-space:pre">             </span>error = lldb.SBError()</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>logging.debug("res is %s", res);</div><div><span class="Apple-tab-span" style="white-space:pre">           </span>logging.debug("fname is %s", fname);</div><div><span class="Apple-tab-span" style="white-space:pre">               </span>logging.debug("error is %s", error);</div><div><br></div><div>if __name__ == '__main__':</div><div>    # This script is being run from the command line, create a debugger in case we are</div><div>    # going to use any debugger functions in our function.</div><div>    lldb.debugger = lldb.SBDebugger.Create()</div><div>    plot (sys.argv)</div><div><br></div><div>def __lldb_init_module (debugger, dict):</div><div>    # This initializer is being run from LLDB in the embedded command interpreter</div><div>    # Add any commands contained in this module to LLDB</div><div>    debugger.HandleCommand('command script add -f plot.plot plot')</div><div>    print '"plot" command installed, type "plot --help" for detailed help'</div></div><div><br></div></body></html>