Ver código fonte

debugger: more parameters exported to cfg

Daniel-Constantin Mierla 15 anos atrás
pai
commit
8412526a4e

+ 81 - 2
modules/debugger/README

@@ -27,6 +27,11 @@ Daniel-Constantin Mierla
 
 
               3.1. cfgtrace (int)
               3.1. cfgtrace (int)
               3.2. breakpoint (int)
               3.2. breakpoint (int)
+              3.3. log_level (int)
+              3.4. log_facility (str)
+              3.5. log_prefix (str)
+              3.6. step_usleep (int)
+              3.7. step_loops (int)
 
 
         4. Exported Functions
         4. Exported Functions
 
 
@@ -45,7 +50,12 @@ Daniel-Constantin Mierla
 
 
    1.1. Set cfgtrace parameter
    1.1. Set cfgtrace parameter
    1.2. Set breakpoint parameter
    1.2. Set breakpoint parameter
-   1.3. mt_match usage
+   1.3. Set log_level parameter
+   1.4. Set log_facility parameter
+   1.5. Set log_prefix parameter
+   1.6. Set step_usleep parameter
+   1.7. Set step_loops parameter
+   1.8. dbg_breakpoint usage
 
 
 Chapter 1. Admin Guide
 Chapter 1. Admin Guide
 
 
@@ -61,6 +71,11 @@ Chapter 1. Admin Guide
 
 
         3.1. cfgtrace (int)
         3.1. cfgtrace (int)
         3.2. breakpoint (int)
         3.2. breakpoint (int)
+        3.3. log_level (int)
+        3.4. log_facility (str)
+        3.5. log_prefix (str)
+        3.6. step_usleep (int)
+        3.7. step_loops (int)
 
 
    4. Exported Functions
    4. Exported Functions
 
 
@@ -117,6 +132,11 @@ Chapter 1. Admin Guide
 
 
    3.1. cfgtrace (int)
    3.1. cfgtrace (int)
    3.2. breakpoint (int)
    3.2. breakpoint (int)
+   3.3. log_level (int)
+   3.4. log_facility (str)
+   3.5. log_prefix (str)
+   3.6. step_usleep (int)
+   3.7. step_loops (int)
 
 
 3.1. cfgtrace (int)
 3.1. cfgtrace (int)
 
 
@@ -141,6 +161,65 @@ modparam("debugger", "cfgtrace", 1)
 modparam("debugger", "breakpoint", 1)
 modparam("debugger", "breakpoint", 1)
 ...
 ...
 
 
+3.3. log_level (int)
+
+   What log level to be used to print module specific messages.
+
+   Default value is "-1" (L_ERR).
+
+   Example 1.3. Set log_level parameter
+...
+modparam("debugger", "log_level", 1)
+...
+
+3.4. log_facility (str)
+
+   What log facility to be used to print module specific messages.
+
+   Default value is "NULL" (default from core).
+
+   Example 1.4. Set log_facility parameter
+...
+modparam("debugger", "log_facility", "LOG_DAEMON")
+...
+
+3.5. log_prefix (str)
+
+   String to print before any module specific messages.
+
+   Default value is "*** cfgtrace:".
+
+   Example 1.5. Set log_prefix parameter
+...
+modparam("debugger", "log_prefix", "from-debugger-with-love:")
+...
+
+3.6. step_usleep (int)
+
+   Microseconds to sleep before checking for new commands when waiting at
+   breakpoint
+
+   Default value is "100000" (that is 0.1sec).
+
+   Example 1.6. Set step_usleep parameter
+...
+modparam("debugger", "step_usleep", 500000)
+...
+
+3.7. step_loops (int)
+
+   How many sleeps of 'step_usleep' the RPC process performs when waiting
+   for a reply from worker process before responding to RPC. This avoids
+   blocking RPC process for ever in case the worker process 'forgets' to
+   write back a reply.
+
+   Default value is "200".
+
+   Example 1.7. Set step_loops parameter
+...
+modparam("debugger", "step_loops", 100)
+...
+
 4. Exported Functions
 4. Exported Functions
 
 
    4.1. dbg_breakpoint(mode)
    4.1. dbg_breakpoint(mode)
@@ -153,7 +232,7 @@ modparam("debugger", "breakpoint", 1)
    Note that this version does not export this anchors to RPC for
    Note that this version does not export this anchors to RPC for
    interactive debugging (temporary disabled).
    interactive debugging (temporary disabled).
 
 
-   Example 1.3. mt_match usage
+   Example 1.8. dbg_breakpoint usage
 ...
 ...
 if($si=="10.0.0.10")
 if($si=="10.0.0.10")
         dbg_breakpoint("1");
         dbg_breakpoint("1");

+ 26 - 0
modules/debugger/debugger_mod.c

@@ -45,8 +45,16 @@ static void mod_destroy(void);
 static int w_dbg_breakpoint(struct sip_msg* msg, char* point, char* str2);
 static int w_dbg_breakpoint(struct sip_msg* msg, char* point, char* str2);
 static int fixup_dbg_breakpoint(void** param, int param_no);
 static int fixup_dbg_breakpoint(void** param, int param_no);
 
 
+/* parameters */
 extern int _dbg_cfgtrace;
 extern int _dbg_cfgtrace;
 extern int _dbg_breakpoint;
 extern int _dbg_breakpoint;
+extern int _dbg_cfgtrace_level;
+extern int _dbg_cfgtrace_facility;
+extern char *_dbg_cfgtrace_prefix;
+extern int _dbg_step_usleep;
+extern int _dbg_step_loops;
+
+static char * _dbg_cfgtrace_facility_str = 0;
 
 
 static cmd_export_t cmds[]={
 static cmd_export_t cmds[]={
 	{"dbg_breakpoint", (cmd_function)w_dbg_breakpoint, 1,
 	{"dbg_breakpoint", (cmd_function)w_dbg_breakpoint, 1,
@@ -57,6 +65,11 @@ static cmd_export_t cmds[]={
 static param_export_t params[]={
 static param_export_t params[]={
 	{"cfgtrace",          INT_PARAM, &_dbg_cfgtrace},
 	{"cfgtrace",          INT_PARAM, &_dbg_cfgtrace},
 	{"breakpoint",        INT_PARAM, &_dbg_breakpoint},
 	{"breakpoint",        INT_PARAM, &_dbg_breakpoint},
+	{"log_level",         INT_PARAM, &_dbg_cfgtrace_level},
+	{"log_facility",      STR_PARAM, &_dbg_cfgtrace_facility_str},
+	{"log_prefix",        STR_PARAM, &_dbg_cfgtrace_prefix},
+	{"step_usleep",       INT_PARAM, &_dbg_step_usleep},
+	{"step_loops",        INT_PARAM, &_dbg_step_loops},
 	{0, 0, 0}
 	{0, 0, 0}
 };
 };
 
 
@@ -81,6 +94,19 @@ struct module_exports exports = {
  */
  */
 static int mod_init(void)
 static int mod_init(void)
 {
 {
+	int fl;
+	if (_dbg_cfgtrace_facility_str!=NULL)
+	{
+		fl = str2facility(_dbg_cfgtrace_facility_str);
+		if (fl != -1)
+		{
+			_dbg_cfgtrace_facility = fl;
+		} else {
+			LM_ERR("invalid log facility configured");
+			return -1;
+		}
+	}
+
 	if(dbg_init_rpc()!=0)
 	if(dbg_init_rpc()!=0)
 	{
 	{
 		LM_ERR("failed to register RPC commands\n");
 		LM_ERR("failed to register RPC commands\n");

+ 105 - 1
modules/debugger/doc/debugger_admin.xml

@@ -115,6 +115,110 @@ modparam("debugger", "breakpoint", 1)
 	    </example>
 	    </example>
 	</section>
 	</section>
 
 
+	<section>
+	    <title><varname>log_level</varname> (int)</title>
+	    <para>
+			What log level to be used to print module specific messages.
+	    </para>
+	    <para>
+		<emphasis>
+		    Default value is <quote>-1</quote> (L_ERR).
+		</emphasis>
+	    </para>
+	    <example>
+		<title>Set <varname>log_level</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("debugger", "log_level", 1)
+...
+</programlisting>
+	    </example>
+	</section>
+
+	<section>
+	    <title><varname>log_facility</varname> (str)</title>
+	    <para>
+			What log facility to be used to print module specific messages.
+	    </para>
+	    <para>
+		<emphasis>
+		    Default value is <quote>NULL</quote> (default from core).
+		</emphasis>
+	    </para>
+	    <example>
+		<title>Set <varname>log_facility</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("debugger", "log_facility", "LOG_DAEMON")
+...
+</programlisting>
+	    </example>
+	</section>
+
+	<section>
+	    <title><varname>log_prefix</varname> (str)</title>
+	    <para>
+			String to print before any module specific messages.
+	    </para>
+	    <para>
+		<emphasis>
+		    Default value is <quote>*** cfgtrace:</quote>.
+		</emphasis>
+	    </para>
+	    <example>
+		<title>Set <varname>log_prefix</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("debugger", "log_prefix", "from-debugger-with-love:")
+...
+</programlisting>
+	    </example>
+	</section>
+
+	<section>
+	    <title><varname>step_usleep</varname> (int)</title>
+	    <para>
+			Microseconds to sleep before checking for new commands when
+			waiting at breakpoint
+	    </para>
+	    <para>
+		<emphasis>
+		    Default value is <quote>100000</quote> (that is 0.1sec).
+		</emphasis>
+	    </para>
+	    <example>
+		<title>Set <varname>step_usleep</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("debugger", "step_usleep", 500000)
+...
+</programlisting>
+	    </example>
+	</section>
+
+	<section>
+	    <title><varname>step_loops</varname> (int)</title>
+	    <para>
+			How many sleeps of 'step_usleep' the RPC process performs when
+			waiting for a reply from worker process before responding to RPC.
+			This avoids blocking RPC process for ever in case the worker
+			process 'forgets' to write back a reply.
+	    </para>
+	    <para>
+		<emphasis>
+		    Default value is <quote>200</quote>.
+		</emphasis>
+	    </para>
+	    <example>
+		<title>Set <varname>step_loops</varname> parameter</title>
+		<programlisting format="linespecific">
+...
+modparam("debugger", "step_loops", 100)
+...
+</programlisting>
+	    </example>
+	</section>
+
 	</section>
 	</section>
 	
 	
     <section>
     <section>
@@ -132,7 +236,7 @@ modparam("debugger", "breakpoint", 1)
 			interactive debugging (temporary disabled).
 			interactive debugging (temporary disabled).
 	    </para>
 	    </para>
 		<example>
 		<example>
-		<title><function>mt_match</function> usage</title>
+		<title><function>dbg_breakpoint</function> usage</title>
 		<programlisting format="linespecific">
 		<programlisting format="linespecific">
 ...
 ...
 if($si=="10.0.0.10")
 if($si=="10.0.0.10")