VELT-0.1.3开发: MinGW gdb的一个奇怪问题

快乐虾

http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651)

欢迎转载,但请保留作者信息


VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发。利用这个插件,将可以在visual studioIDE中进行Linux应用程序的开发(包括编译和调试),也可以进行ubootlinux内核的编译,并根据编译时的错误信息正确定位到源码。目前的版本是0.1.2,仅支持vs2013,是一个刚刚启动开发不久的插件。可以在CSDN下载频道下载(http://download.csdn.net/detail/lights_joy/8359251),安装过程参见《Vs2013+VELT-0.1.0进行Linux开发:环境搭建》。下面是它的基本功能:

  1. 支持x86 Linuxhi3516hi3520MinGW这几个平台。

  2. 完成UBOOT的编译,并根据编译的错误信息自动定位到相应的文件位置。

  3. 完成LINUX内核的编译,并根据编译的错误信息自动定位到相应的文件位置。

  4. 完成LINUX内核的配置。

  5. 不使用Makefile进行Linux应用程序的编译。

  6. 使用SSH连接目标机器并用gdb进行应用程序的调试。

  7. 使用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直接导致程序结束,感觉好像是gdbCtrl-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








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值