Contents [hide]
1 Introduction
2 Troubleshooting
2.1 Handy Troubleshooting Links
2.2 UUID Stamp at each DEBUG line
2.3 Chasing down XML errors
2.4 Recompiling with debug symbols on
2.5 Creating core files
2.6 Loading FreeSWITCH in GDB
2.6.1 Getting a Backtrace
2.6.2 Finding session pointers
2.7 Simple bash script to make debug easy
3 gdb issues
4 See Also
Introduction
This page is about using a debugger with FreeSWITCH.
If you are new to troubleshooting, asking for help, or filing bug reports, please read this first. It will save you a lot of time.
For an introduction to please see troubleshooting see Troubleshooting FreeSWITCH
Troubleshooting
Handy Troubleshooting Links
Troubleshooting FreeSWITCH
Packet Capturing
The Dialplan
SIP Debugging
Connection Refused
UUID Stamp at each DEBUG line
The update in the code to enable a UUID Stamp at each debug line (provided kindly by Mathieu Rene and referred to in the "Finding session pointers" section below) has been committed to the GIT head (as of 19/Nov/2009), and you can enable this by a simple option at the logfile.conf.xml:
Chasing down XML errors
So you have FreeSWITCH with all of those included files and you get the "error near line X". With all of the included files where does this line number come from.
By default it is ~freeswitch/log/freeswitch.xml.fsxml
Do not edit this file while FreeSWITCH is running. It is memory mapped.
freeswitch@localhost.localdomain>reloadxml
API CALL [reloadxml()] output:
+OK [[error near line 1622]: unexpected closing tag ]
freeswitch@localhost.localdomain>
Recompiling with debug symbols on
export CFLAGS="-g -ggdb"
export MOD_CFLAGS="-g -ggdb"
./configure
Creating core files
For core files to be created when a crash occurs, set the core ulimit to unlimited before starting FreeSWITCH
$ ulimit -c unlimited
$ ./freeswitch
The core file should be located in the directory where FreeSWITCH was started (i.e., if you were in the /tmp directory when you typed the command to start FreeSWITCH, then there should be a file called something like /tmp/core.xxx).
NOTE: On OS X, core files are dumped to a hidden directory called /cores by default, not the current directory!
Loading FreeSWITCH in GDB
From /usr/local/freeswitch:
$ gdb bin/freeswitch
To load with a core file
$ gdb bin/freeswitch core.xxx
Getting a Backtrace
Once you load the core file into GDB you can collect a backtrace typing
bt
bt full
thread apply all bt
thread apply all bt full
Collect the output when reporting bugs to Jira
Finding session pointers
Sometimes hunting stuff down can be a royal pain. The following code, submitted by Mathieu Rene, will print out all the session information (pointer information, etc.) for each session in a core file. After loading gdb with a core file (see above) do this in gdb:
set $x=session_manager.session_table->table->first
while($x != 0x0)
printf "uuid %s is at %p/n", $x->pKey, $x->data
set $x = $x->next
end
NB: $x->data is the switch_core_session_t*, you can dereference the channel with ->channel and can print some other stuff you might be looking for. This also work to print the content of a hashtable (use hash_table_name->table->first on the first set)
Simple bash script to make debug easy
In the source directory there is a support-d sub-directory. Inside this directory is a handy shell script called fscore_pb. It will post a backtrace to pastebin and report the pastebin URL to you on the command line.
Usage:
support-d/fscore_pb [corefile]
The corefile is optional. If not specified, the script will take a gcore of a running instance of FreeSWITCH. If you've had a segfault then specify the core file name. For example, if you had a segfault and the core file produced was named core.12345 then use this command:
support-d/fscore_pb core.12345
The script will collect the appropriate trace (and some other information), post it to pastebin.freeswitch.org, and then give you the URL to give to the developers.
gdb issues
On Ubuntu (Dapper/Hardy/Jaunty) gdb does not show symbols for some modules (e.g. mod_portaudio), while CentOS 5.3 havan't got such issue.
The reason of the issue is that gdb in Ubuntu (probably Debian is affected too) is buggy. As a quick fix you can install development version of gdb from sources (install flex, bison and texinfo and get sources from git repository) which solves the issue. gdb trunk 20090626 is proven to work.
See Also
Reporting Bugs
Error Codes
Submitting Patches
分享到:
相关推荐
Master the art of advanced VoIP and WebRTC communication with the most dynamic ...Chapter 12: Tracing and Debugging VoIP Chapter 13: Homer, Monitoring and Troubleshooting your Communication Platform
Advanced Apple Debugging & Reverse Engineering, Second Edition ISBN: Learn the powerful secrets of Apple’s software debugger, LLDB, that can get more information out of any program than you ever ...
Advanced Apple Debugging & Reverse Engineering, Second Edition ISBN: Learn the powerful secrets of Apple’s software debugger, LLDB, that can get more information out of any program than you ever ...
Every software developer and IT professional understands the crucial importance of effective debugging. Often, debugging consumes most of a developer’s workday, and mastering the required techniques ...
Through a combination of best practices and common debugging and programming techniques - several of which are not currently documented in other books - this book shows developers why the system works...
一个除错诊断工具,你可以使用Debugging Tools for Windows去测试你的Windows
The First In-Depth, Real-World, Insider’s Guide to Powerful Windows Debugging For Windows developers, few tasks are more challenging than debugging—-or more crucial. Reliable and realistic ...
Advanced.NET.Debugging Advanced.NET.Debugging Advanced.NET.Debugging
Inside Windows Debugging - Practical Debugging and Tracing Strategies 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 ...
debugging_with_gdb(中文版pdf) debugging_with_gdb(中文版pdf)
H3C交换机debugging命令入门使用介绍,debug调试命令。
目前CSDN下载频道中的微软调试工具WinDbg(即Debugging Tools for Windows)大都不适用于Win10系统,在Windows10中会报错:Could not find the xxx\MEMORY.DMP Dump File,Win32 error On87。这里提供的WinDbg10下载...
WinDbg x64 Debugging Tools for Windows 欢迎下载
Advanced+.NET+Debugging
Advanced Apple Debugging & Reverse Engineering, Second Edition ISBN: Learn the powerful secrets of Apple's software debugger, LLDB, that can get more information out of any program than you ever ...
This is the Tenth Edition, of Debugging with GDB: the GNU Source-Level Debugger for GDB (GDB) Version 8.1.90.20180814-git. Copyright © 1988-2018 Free Software Foundation, Inc. Permission is granted...
这是<<Inside Windows Debugging>>的书中代码,很罕见的资源。
Advanced_Windows_Debugging.pdf
Debugging with gdb Debugging with gdb Debugging with gdb Debugging with gdb
Advanced Apple Debugging & Reverse Engineering, Second Edition ISBN: Learn the powerful secrets of Apple’s software debugger, LLDB, that can get more information out of any program than you ever ...