From 18b1b4f7af07f6646c44fe578f86058df3833b71 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 12 Dec 2001 03:49:48 +0000 Subject: [PATCH] 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. --- src/Main/options.cxx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) 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" ) {