cgicc thttpd经常用的调试命令

来源:互联网 发布:数控车床怎么编程视频 编辑:程序博客网 时间:2024/06/05 19:20
export LD_LIBRARY_PATH="/home/share/cgicc-3.1.1/cgicc-3.1.1/cgicc/libs:$LD_LIBRARY_PATH"

//默认
 cat /var/log/syslog
./thttpd -C /home/share/thttpd-2.27/www/thttpd.conf 

http://192.168.1.185:2810/index.cgi?ch=1

gdb多进程调试

set args -C /home/share/thttpd-2.27/www/thttpd.conf 

set detach-on-fork off
show detach-on-fork
catch fork
break libhttpd.c:3547
r 先打断点,再运行

//显示进程
//切换到子进程
info inferiors
inferior (pid)

//子线程
//切换到子线程
info threads
thread 3

//gdb运行脚本
gdb  ./thttpd  -command=gdb.sh

set follow-fork-mode <parent/child> 
这条命令可以用于在调试父进程或是子进程的模式之间进行切换。
例如在fork函数执行之前执行set follow-fork-mode child, 当fork执行后
,设定在子进程上的断点将会有效,而父进程上的断点此时无效;

反之依然。缺省gdb是调试主进程的。


/////===============================================

//gdb.sh

file thttpd
set args -C /home/share/web/bin/thttpd.conf
set detach-on-fork off
show detach-on-fork
b libhttpd.c:3387
catch fork


//================

//thttpd.conf

port=2810
host=192.168.1.185
logfile=/home/share/web/thttpd.log
urlpat=*.txt|*.mp3|*.html|*.cgi
dir=/home/share/web/www/pages/
cgipat=*.cgi


GDB多线程调试的基本命令:

info threads 查看当前进程的线程。
thread <ID> 切换调试的线程为指定ID的线程。
break [LOCATION] [thread THREADNUM] [if CONDITION]  在[LOCATION]处为[thread THREADNUM]设置断点在满足条件[if CONDITION]时停住 。
thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令command。 
thread apply all command  让所有被调试线程执行GDB命令command。 
set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命令调试当前被调试线程的时候,其他线程也是同时执行的,怎么只让被调试程序执行呢?通过这个命令就可以实现这个需求。 
off 不锁定任何线程,也就是所有线程都执行,这是默认值。
on 只有当前被调试程序会执行。
step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

原创粉丝点击