Debugging in Yate
In Yate there are several ways to debug issues that permits you to monitorize the state of the system and of the modules.
The debugging can be done in two ways:
- by following the logs from the file
- at runtime - use rmanager rmanager module that allows you to see logs in real time and control the logging level.
There is also msgsniff to dump the Yate's messages to an output console or log them into a file.
If you start Yate with logging but you use rmanager to change the levels for debugging, the debug messages will be seen not only on the console but also in the file.
Contents |
Start Yate with logging
Start Yate with logging in a file so that you can debug the errors.
To increase the visible debug level you have to add -v option more than once to the command line or to service start script:
yate -vvvvv -l logfile -d -s -r
Also you can use rmanager module to increase the level of debugging and the output will be seen in the logging file.
Debug using rmanager module
This module allows controlling Yate using a simple telnet client.
When we say to control Yate from console that means that remotely logged you can:
- start/stop/restart Yate
- debug the modules
- start/stop calls
Debug modules in Yate
Reloads module configuration files:
- reload [plugin]
Restarts the engine:
- restart [now]
Stops the engine with optionally provided exit code:
- stop [exitcode]
Show information on how long Yate has run:
- uptime
Controls the modules loaded in the Telephony Engine:
- module {{load|reload} modulefile|unload modulename|list}
Show or change debugging level globally or per module:
- debug [module] [level|on|off]
Example: Enable debugging and increase the level of debugging:
telnet localhost 5038 debug on debug level 10 debug sip level 10
Colorize the output in console:
- color [on|off]
Shows status of all or selected modules or channels
- status [overview] [modulename]
Example: Show status module accfile
status accfile %%+status:accfile name=accfile,type=misc;users=2;line_1=outcalls_1,line_2=outcalls_2 %%-status
The output is different depending on the module that is investigated:
- for sipchan module
%%+status:sip name=sip,type=varchans,format=Status|Address|Peer;routed=0,routing=0,total=0,chans=0 %%-status
- for regfile module says that are 7 users defined
status regfile %%+status:regfile name=regfile,type=misc;create=false,defined=7,users=0; %%-status
- for mysqldb module:
status mysqldb %%+status:mysqldb name=mysqldb,type=database,format=Total|Failed|Errors|AvgExecTime;conns=1,failed=0;my_database=1|0|0|15 %%-status
Show log of engine startup and initialization process:
- logview
Debug calls
Drops one or all active calls:
- drop {chan|*|all} [reason]
Execute an outgoing call:
- call chan target
Debug external scripts
Enable output in PHP scripts:
- Yate::Output(true);
Stop/start a script, useful when changes are done and you want to reload the new file in Yate:
- external stop scriptname.php
- external start scriptname.php
Debug using msgsniff module
The module will dump the Yate messages to output console or log into file.
By default this module should be loaded but not started. To start this module use the telnet command or configure it to start together with yate.
Load module msgsniff
Enable module in yate.conf:
[general] msgsniff=no modload=no ;Don't forget to load the sniffer module if modload parameter value is 'no'. [modules] ;for debugging yate rmanager.yate=yes msgsniff.yate=yes
Start msgsniff
- Start Yate with logging:
./run -vvvvv -l logfile
- Enable / Disable sniffer in telnet:
The module must be loaded so that you can use this commands from telnet:
telnet 0 5038 ;enable sniffer: sniffer on ;and disabled with: sniffer off
Use filters with msgsniff
- Filters can be applied by specifying regex to match in telnet:
sniffer filter ^\(chan\.\|engine\.halt$\)
- or in yate.conf:
[default] ; filtersniff: regexp: Default filter to apply to message sniffer at initialization ; If empty it will match all messages except engine.timer which is never displayed ; Example for a filter matching all chan.Anything messages and engine.halt: filtersniff=^\(chan\.\|engine\.halt$\)
Compiling Yate with xdebug, ddebug or debug
This is used by developers to test their code, to see information about creating specific objects or if some specific functions are called.
To compile with debug messages when compiling Yate you have to specify:
make xdebug make ddebug make debug
When compiling with xdebug, the ddebug messages are included but if ddebug is compiled, xdebug messages are not included.
When compiling with debug symbols of functions are added. This will allow creating a useful core file for debugging purpose.
Frequently asked question when debugging
How you see if a module is loaded or not?
Give status command from telnet, this will list all modules that are loaded in that moment. If module is not listed, then it's not loaded.
How do I see if a script is running?
Give command external from telnet, this will display all scripts running in that moment.
Why is my script not stating?
First check the path to the script to be correct, then check that the file is executable and that Yate has writes to execute the script.
See also