<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[调试用到]利用Linux信号SIGUSR1调试嵌入式程序]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 25 Dec 2018 00:13:37 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	Linux嵌入式由于诸多的限制，调试方法有限，常常出现面对Bug束手无策的情况，现在介绍一种通过信号处理对Linux嵌入式应用程序进行调试的方法。<br/><br/>linux中一共有32种信号，在/usr/include/bits/signum.h 头文件中可以看到，具体如下：SIGHUP ;SIGINT ;SIGQUIT ;SIGILL ;SIGTRAP ;SIGABRT ;SIGIOT ;SIGBUS ;SIGFPE ;SIGKILL ;SIGUSR1 ;SIGSEGV ;SIGUSR2 ;SIGPIPE ;SIGALRM ;SIGTERM ;SIGSTKFLT ;SIGCLD ;SIGCHLD ;SIGCONT ;SIGSTOP ;SIGTSTP ;SIGTTIN ;SIGTTOU ;SIGURG ;SIGXCPU ;SIGXFSZ ;SIGVTALRM ;SIGPROF ;SIGWINCH ;SIGPOLL ;SIGIO ;SIGPWR ;SIGSYS ;SIGUNUSED<br/>以上来自：https://blog.csdn.net/u010133805/article/details/53899667 ，他用的c++，改成c研究研究，如下：<br/><br/>看编号，用kill -l，SIGUSR1编号为10，如下所示：<br/>#kill -l<br/> 1) SIGHUP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2) SIGINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3) SIGQUIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4) SIGILL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5) SIGTRAP<br/> 6) SIGABRT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7) SIGBUS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8) SIGFPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9) SIGKILL&nbsp;&nbsp;&nbsp;&nbsp; 10) SIGUSR1<br/>11) SIGSEGV&nbsp;&nbsp;&nbsp;&nbsp; 12) SIGUSR2&nbsp;&nbsp;&nbsp;&nbsp; 13) SIGPIPE&nbsp;&nbsp;&nbsp;&nbsp; 14) SIGALRM&nbsp;&nbsp;&nbsp;&nbsp; 15) SIGTERM<br/>16) SIGSTKFLT&nbsp;&nbsp; 17) SIGCHLD&nbsp;&nbsp;&nbsp;&nbsp; 18) SIGCONT&nbsp;&nbsp;&nbsp;&nbsp; 19) SIGSTOP&nbsp;&nbsp;&nbsp;&nbsp; 20) SIGTSTP<br/>21) SIGTTIN&nbsp;&nbsp;&nbsp;&nbsp; 22) SIGTTOU&nbsp;&nbsp;&nbsp;&nbsp; 23) SIGURG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;24) SIGXCPU&nbsp;&nbsp;&nbsp;&nbsp; 25) SIGXFSZ<br/>26) SIGVTALRM&nbsp;&nbsp; 27) SIGPROF&nbsp;&nbsp;&nbsp;&nbsp; 28) SIGWINCH&nbsp;&nbsp;&nbsp;&nbsp;29) SIGIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30) SIGPWR<br/>31) SIGSYS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;34) SIGRTMIN&nbsp;&nbsp;&nbsp;&nbsp;35) SIGRTMIN+1&nbsp;&nbsp;36) SIGRTMIN+2&nbsp;&nbsp;37) SIGRTMIN+3<br/>38) SIGRTMIN+4&nbsp;&nbsp;39) SIGRTMIN+5&nbsp;&nbsp;40) SIGRTMIN+6&nbsp;&nbsp;41) SIGRTMIN+7&nbsp;&nbsp;42) SIGRTMIN+8<br/>43) SIGRTMIN+9&nbsp;&nbsp;44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13<br/>48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12<br/>53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9&nbsp;&nbsp;56) SIGRTMAX-8&nbsp;&nbsp;57) SIGRTMAX-7<br/>58) SIGRTMAX-6&nbsp;&nbsp;59) SIGRTMAX-5&nbsp;&nbsp;60) SIGRTMAX-4&nbsp;&nbsp;61) SIGRTMAX-3&nbsp;&nbsp;62) SIGRTMAX-2<br/>63) SIGRTMAX-1&nbsp;&nbsp;64) SIGRTMAX<br/><br/>其中SIGUSER1信号用户可以自己定义其处理行为，处理范例如下：<br/><textarea name="code" class="php" rows="15" cols="100">
#include &lt;stdio.h&gt;&nbsp;&nbsp;
#include &lt;signal.h&gt;&nbsp;&nbsp;

typedef int bool;
#define true 1
#define false 0
//该变量可以在应用程序中使用
static bool flag = false;
void signal_handle(int sig_num)&nbsp;&nbsp;
&#123;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;sig_num=%d&#92;n&quot;,sig_num);
&nbsp;&nbsp;&nbsp;&nbsp;if(SIGUSR1 != sig_num)
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;

&nbsp;&nbsp;&nbsp;&nbsp;flag = flag ? false : true;&nbsp;&nbsp;&nbsp;&nbsp; 
&#125;

int main(int argc,char **argv)&nbsp;&nbsp;
&#123;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;signal(SIGUSR1, signal_handle);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;while(1)&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(flag)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;flag is true!&#92;n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;flag is false&#92;n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(5);&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;return 0 ;&nbsp;&nbsp;
&#125;
</textarea><br/>#make usr1<br/>cc&nbsp;&nbsp;&nbsp;&nbsp; usr1.c&nbsp;&nbsp; -o usr1<br/>./usr1<br/><br/>ps -ef&#124;grep usr1<br/><br/>kill -s SIGUSR1 17331<br/>sig_num=10<br/>flag is true!<br/>sig_num=10<br/>flag is false<br/>flag is false
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [调试用到]利用Linux信号SIGUSR1调试嵌入式程序]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>