1. 借助工具看进程状态2. 查看各种日志,程序级别的、系统级别的等等
分类存档:Linux & Unix
关于黑白名单的实现
就在不经意的时候,我们可能会把一个大的黑白名单直接写在PHP的数组中,然后使用in_array判断指定的值是否 …
PHP 的一个错误
PHP 的一个错误 <?php $fp = fopen("f …
shell 的source命令
man 中说到:Read and execute commands from filename in the …
一个检查偶发连接失败的脚本
情景:从机器A到机器B发起连接,连接超时时间设置为1s,有一定概率的连接失败的情况,使用下面脚本来测试,不断连 …
nc 使用点滴
检查网络连通性:while :; do nc -z -v -w 1 10.79.40.43 11231  …
关于dot点滴
1. 源文件需要是UTF-8编码的2. 可以通过环境变量 DOTFONTPATH 来设置字体目录, …
关于sar的一个问题: Invalid system activity file
问题: # sar -qInvalid system activity file: /var/log/sa/s …
curl 访问https的问题
问题: wireshark抓包如下:这里显示的是CA问题; 首先,颁发server证书的CA是没有问题的,那么 …
用 Graphviz 可视化函数调用
GNU 的入口和出口配置函数
1 |
<div contenteditable="false" class="HighLighter"><div contenteditable="false" class="dp-highlighter"><div class="bar"> </div><ol start="1" class="dp-cpp"><li class="alt"><span><span class="keyword">void</span><span> __cyg_profile_func_enter( </span><span class="keyword">void</span><span> *func_address, </span><span class="keyword">void</span><span> *call_site )</span></span></li><li class=""><span> __attribute__ ((no_instrument_function));</span></li><li class="alt"><span><span class="keyword">void</span><span> __cyg_profile_func_exit ( </span><span class="keyword">void</span><span> *func_address, </span><span class="keyword">void</span><span> *call_site )</span></span></li><li class=""><span> __attribute__ ((no_instrument_function));</span></li></ol></div></div>这两个函数是GNU编译器给安排的,如果定了,则,在函数的入口和出口分别会调用; 当然,这个是在编译期决定的。运行期就无法指定了。<br /><br /><strong>可简单定义如下</strong>:<br /><div contenteditable="false" class="HighLighter"><div contenteditable="false" class="dp-highlighter"><div class="bar"> </div><ol start="1" class="dp-cpp"><li class="alt"><span><span class="keyword">void</span><span> __cyg_profile_func_enter( </span><span class="keyword">void</span><span> *</span><span class="keyword">this</span><span>, </span><span class="keyword">void</span><span> *callsite )</span></span></li><li class=""><span>{</span></li><li class="alt"><span> <span class="comment">/* Function Entry Address */</span><span></span></span></li><li class=""><span> fprintf(fp, <span class="string">"E%p\n"</span><span>, (</span><span class="datatypes">int</span><span> *)</span><span class="keyword">this</span><span>);</span></span></li><li class="alt"><span>}</span></li><li class=""><span><span class="keyword">void</span><span> __cyg_profile_func_exit( </span><span class="keyword">void</span><span> *</span><span class="keyword">this</span><span>, </span><span class="keyword">void</span><span> *callsite )</span></span></li><li class="alt"><span>{</span></li><li class=""><span> <span class="comment">/* Function Exit Address */</span><span></span></span></li><li class="alt"><span> fprintf(fp, <span class="string">"X%p\n"</span><span>, (</span><span class="datatypes">int</span><span> *)</span><span class="keyword">this</span><span>);</span></span></li><li class=""><span>}</span></li></ol></div><div contenteditable="false" style="display:none" class="cpp"><pre>void __cyg_profile_func_enter( void *this, void *callsite ) { /* Function Entry Address */ fprintf(fp, "E%p\n", (int *)this); } void __cyg_profile_func_exit( void *this, void *callsite ) { /* Function Exit Address */ fprintf(fp, "X%p\n", (int *)this); } |
这里,我们是在函 …