]> git.mxchange.org Git - flightgear.git/commitdiff
Added --trace-read=<property> and --trace-write=<property> options.
authordavid <david>
Wed, 12 Dec 2001 03:49:48 +0000 (03:49 +0000)
committerdavid <david>
Wed, 12 Dec 2001 03:49:48 +0000 (03:49 +0000)
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

index 44aae7246c97527cdd3848bd619c109c10886633..e1002c356068b0688eb8f2bf39fa3504fa1e9b7c 100644 (file)
@@ -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" ) {