快乐虾
http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)
欢迎转载,但请保留作者信息
VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visual studio的IDE中进行Linux应用程序的开发(包括编译和调试),也可以进行uboot和linux内核的编译,并根据编译时的错误信息正确定位到源码。目前的版本是0.1.2,仅支持vs2013,是一个刚刚启动开发不久的插件。可以在CSDN下载频道下载(http://download.csdn.net/detail/lights_joy/8359251),安装过程参见《用Vs2013+VELT-0.1.0进行Linux开发:环境搭建》。下面是它的基本功能:
支持x86 Linux,hi3516,hi3520,MinGW这几个平台。
完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。
完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。
完成LINUX内核的配置。
不使用Makefile进行Linux应用程序的编译。
使用SSH连接目标机器并用gdb进行应用程序的调试。
使用Telnet连接目标机器并用gdb进行应用程序的调试。
在使用MinGW gdb的时候遇到一个不解的问题。
在调试下面这个简单程序的时候,当按下Ctrl-C中断程序的时候,导致程序异常退出。
int main(int argc, char* argv[]) { printf("i‘m here!\n"); getchar(); return 0; }
下面是调试记录:
按照我们的预想,当按下Ctrl-C时,此时gdb应该将程序停在getchar函数上,可以看到栈和线程的信息,但实际上Ctrl-C直接导致程序结束,感觉好像是gdb将Ctrl-C做为一个字符喂给了getchar,然后应用程序就直接结束了。
验证一下,将程序改为:
int main(int argc, char* argv[]) { printf("i‘m here!\n"); int c = getchar(); printf("getchar returns %d\n", c); while(true) Sleep(100); return 0; }
这回就看得很清楚了,Ctrl-C除了让gdb中断程序和执行外,还导致了getchar函数退出,但是奇怪的是此时getchar得到的值是-1,而不是Ctrl-C的值0x3!
VELT-0.1.3开发: MinGW gdb的一个奇怪问题
原文地址:http://blog.csdn.net/lights_joy/article/details/42882763