From: david Date: Wed, 12 Dec 2001 03:49:48 +0000 (+0000) Subject: Added --trace-read= and --trace-write= options. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=18b1b4f7af07f6646c44fe578f86058df3833b71;p=flightgear.git Added --trace-read= and --trace-write= options. These will log trace messages whenever a specific property value is read or written through the property manager. They do not cause FlightGear to poll bound values, so if a class variable that is bound is changed directly, no trace message will be displayed. These options are also useful in conjunction with a debugger. --trace-read will cause the private SimGear SGPropertyNode::trace_read method to be invoked, and --trace-write will cause the private SimGear SGPropertyNode::trace_write method to be invoked; in a debugger session, a user can set breakpoints on these methods then get a backtrace to see what specific points in the code are reading or writing properties. --- diff --git a/src/Main/options.cxx b/src/Main/options.cxx index 44aae7246..e1002c356 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -839,9 +839,17 @@ parse_option (const string& arg) fgSetString(name.c_str(), value); // SG_LOG(SG_GENERAL, SG_INFO, "Setting default value of property " // << name << " to \"" << value << '"'); - // $$$ begin - added VS Renganathan, 14 Oct 2K - // for multi-window outside window imagery + } else if ( arg.find("--trace-read=") == 0) { + string name = arg.substr(13); + SG_LOG(SG_GENERAL, SG_INFO, "Tracing reads for property " << name); + fgGetNode(name, true)->setAttribute(SGPropertyNode::TRACE_READ, true); + } else if ( arg.find("--trace-write=") == 0) { + string name = arg.substr(14); + SG_LOG(SG_GENERAL, SG_INFO, "Tracing writes for property " << name); + fgGetNode(name, true)->setAttribute(SGPropertyNode::TRACE_WRITE, true); } else if ( arg.find( "--view-offset=" ) == 0 ) { + // $$$ begin - added VS Renganathan, 14 Oct 2K + // for multi-window outside window imagery string woffset = arg.substr( 14 ); double default_view_offset = 0.0; if ( woffset == "LEFT" ) {