忠忠的新百宝袋

做人要厚道

一个调试的小方法

Posted by Kai on October 9th, 2008

我有一个程序,是非控台程序,我需要看到程序运行过程中的一些变量的值,但是我不想用断点停下程序。因为程序是有窗口的不断运行的,所以我需要在程序运行过程中看到某些变量的值,根据看到的结果我可以做出一些操作,之后再看到结果。

今天碰巧想到了一个小方法,用起来还挺方便。实践了一下,也不麻烦。

首先,在代码里面,把要监视的数据用文件流输出到一个文件,比如watch.txt

第二,写一个相应的bash脚本,不停的检测watch.txt的大小有没有改变,如果有改变,输出watch.txt的最后几行,行数看需要。

这个bash脚本很容易,寥寥几行。

PRE=”"
NOW=”"
FILE=”output.txt”
NO=0
echo “Watch $FILE”
while [[ 1 ]];
do
PRE=$NOW
NOW=`stat $FILE | grep -i size`
if [[ "$PRE" != "$NOW" ]];
then
clear
echo ——————- $NO ——————–
cat $FILE
let NO=$NO+1
echo
else
sleep 0.2#停顿一会,避免繁忙等待占用过多的cpu资源
fi
done
接下来,需要使用Cygwin,启动一个bash shell,调用那个bash脚本就可以了。

实验了一下,效果非常的好,就仿佛在运行中把visual studio的watch窗口拿出来一样,这样我可以同时在桌面上显示调试程序的窗口和cygwin shell窗口,用鼠标操作调试程序,同时看到某些变量的值的变化。

不一定用bash,用python,perl等等其他脚本语言也能做到,而且还可以做的更加强大。我用bash只是因为bash在linux上是比较通用的脚本语言。

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*
To prove you're a person (not a spam script), type the security word shown in the picture.
Anti-Spam Image

 
FireStats icon Powered by FireStats