当前位置: 技术问答>linux和unix
windows转unix编程新手问题
来源: 互联网 发布时间:2016-01-04
本文导语: 我学习了一些unix书,我也理解windows和unix的差异,但是编程时还是感觉有些不方便,能否请老手指点一下: 1 看稍有规模的代码不是很方便,体现在查找一个类或函数的定义时 2 unix的编程在线帮助系统是怎么使用...
我学习了一些unix书,我也理解windows和unix的差异,但是编程时还是感觉有些不方便,能否请老手指点一下:
1 看稍有规模的代码不是很方便,体现在查找一个类或函数的定义时
2 unix的编程在线帮助系统是怎么使用的?在windows下开发基本只需用MSDN,许多东西都很好查
3 调试。请问哪有unix下调试一个程序的步骤介绍?单步、断点、查看变量、内存、寄存器、call stack,条件断点,编辑继续等等功能都怎么做?
4 遇到需多任务切换时,通常都怎么做?例如在修改代码同时运行程序?
5 写代码的时候,代码自动补全功能如何做?有没有自动提示或列出成员变量、或列出某前缀的全局函数?
以上问题尽管我不希望听到"使用X"的答案,但是我还是希望看到老手们真实的做法,好给我一个参考。
1 看稍有规模的代码不是很方便,体现在查找一个类或函数的定义时
2 unix的编程在线帮助系统是怎么使用的?在windows下开发基本只需用MSDN,许多东西都很好查
3 调试。请问哪有unix下调试一个程序的步骤介绍?单步、断点、查看变量、内存、寄存器、call stack,条件断点,编辑继续等等功能都怎么做?
4 遇到需多任务切换时,通常都怎么做?例如在修改代码同时运行程序?
5 写代码的时候,代码自动补全功能如何做?有没有自动提示或列出成员变量、或列出某前缀的全局函数?
以上问题尽管我不希望听到"使用X"的答案,但是我还是希望看到老手们真实的做法,好给我一个参考。
|
1 看稍有规模的代码不是很方便,体现在查找一个类或函数的定义时
A:用更强有力的工具比MS家族:
emacs+ctags/etags+speedbar
emacs+senator+semantic
vi+ctags
多数情况组合使用emacs+*或vi+*
2 unix的编程在线帮助系统是怎么使用的?在windows下开发基本只需用MSDN,许多东西都很好查
A:unix更好查比MS家族:
man+grep/less 多用于库函数
info 多用于系统帮助
3 调试。请问哪有unix下调试一个程序的步骤介绍?单步、断点、查看变量、内存、寄存器、call stack,条件断点,编辑继续等等功能都怎么做?
A:unix调试器要远远强大于MS家族(那根本不能叫做真真的调试器):
gdb你所指的功能全都有,任何一个方面都强于MSVC,,比如手工调用一个函数而不执行你的程序。条件断点可以设置,位置中断,访问中断,事件中断,计数中断,条件表达式中断,中断后处理等。可以保存程序内部状态等。
gdb的手册有几百页厚。
具体都是通过gdb提示符下的命令执行,也有一些gdb的前端可用,比较著名的是ddd(在X中,如果你想要一个可以只用鼠标的调试器)。
使用emacs+gdb,你会获得源码和调试同步显示的能力。
4 遇到需多任务切换时,通常都怎么做?例如在修改代码同时运行程序?
gdb) thread id
gdb)set write on
编译然后继续你的调试
5 写代码的时候,代码自动补全功能如何做?有没有自动提示或列出成员变量、或列出某前缀的全局函数?
emacs+senator 或
emacs+semantic 或
emacs+semantic+index
调试时TAB
大师们常说没有人能真正了解unix,如果上面的这些东西你不知道,你可能还有很多书要看,很多实践要做。gcc,glibc,emacs是从来没用过windows的人写出来的,他根本不会用windows,编写像TCP/IP协议等互联网基础架构的人大部分人没用过windows的。相对于他们,相对于stallman我们还有很多路要走。
A:用更强有力的工具比MS家族:
emacs+ctags/etags+speedbar
emacs+senator+semantic
vi+ctags
多数情况组合使用emacs+*或vi+*
2 unix的编程在线帮助系统是怎么使用的?在windows下开发基本只需用MSDN,许多东西都很好查
A:unix更好查比MS家族:
man+grep/less 多用于库函数
info 多用于系统帮助
3 调试。请问哪有unix下调试一个程序的步骤介绍?单步、断点、查看变量、内存、寄存器、call stack,条件断点,编辑继续等等功能都怎么做?
A:unix调试器要远远强大于MS家族(那根本不能叫做真真的调试器):
gdb你所指的功能全都有,任何一个方面都强于MSVC,,比如手工调用一个函数而不执行你的程序。条件断点可以设置,位置中断,访问中断,事件中断,计数中断,条件表达式中断,中断后处理等。可以保存程序内部状态等。
gdb的手册有几百页厚。
具体都是通过gdb提示符下的命令执行,也有一些gdb的前端可用,比较著名的是ddd(在X中,如果你想要一个可以只用鼠标的调试器)。
使用emacs+gdb,你会获得源码和调试同步显示的能力。
4 遇到需多任务切换时,通常都怎么做?例如在修改代码同时运行程序?
gdb) thread id
gdb)set write on
编译然后继续你的调试
5 写代码的时候,代码自动补全功能如何做?有没有自动提示或列出成员变量、或列出某前缀的全局函数?
emacs+senator 或
emacs+semantic 或
emacs+semantic+index
调试时TAB
大师们常说没有人能真正了解unix,如果上面的这些东西你不知道,你可能还有很多书要看,很多实践要做。gcc,glibc,emacs是从来没用过windows的人写出来的,他根本不会用windows,编写像TCP/IP协议等互联网基础架构的人大部分人没用过windows的。相对于他们,相对于stallman我们还有很多路要走。
|
呵呵,我都写了2年linux程序了,连makefile,g++ ,gcc,gdb,命令还不会用.
为什么阿,因为我在用linux上的VC阿.
Magicc++.
居然没有人说Magicc++.
这是一个在c/s结构的东西.
客户端在Win上,用户界面跟VC一样,Server端在Linux上,负责执行编译和调试功能.
当你在Win的客户端上按F5进行单步调试的时候,过程是跟VC一摸一样的,程序还是在linux上执行的,所以你既可以得到win的方便,也可以在真实的环境上运行.
比所谓的cgwin的模拟强多了.
举例吧,我想在linux上编译ACE,有几百个文件,几百个类吧.
我只要建立一个工程,选择向工程添加文件菜单,选中ACE_WRAPPER目录,选中递归子目录选项,过个一阵子,几百个类就跟VC一样出现在窗口上了.
这个时候我再按一下F5,就开始编译了,过个几十分钟,就编译完了.
如果你不用MAGICC++,可能要自己写Makefile文件吧.当然ACE会提供MAKEFILE,但是所谓的开源,提供的MAKRFEIL好不好用还不一定.
这时候,有人该说我水平差了,说我被MS弄傻了.呵呵.
我认为使用g++,gdb,printf的人才傻呢.
我碰见使用Linux的人,就会推荐MAGICC++的,因为是它让我帮助我从win上1天之内就转到了linux平台上.
linux开发和win应用开发没有什么区别,系统API都差不多
区别就是linux太没有人性了.
为什么阿,因为我在用linux上的VC阿.
Magicc++.
居然没有人说Magicc++.
这是一个在c/s结构的东西.
客户端在Win上,用户界面跟VC一样,Server端在Linux上,负责执行编译和调试功能.
当你在Win的客户端上按F5进行单步调试的时候,过程是跟VC一摸一样的,程序还是在linux上执行的,所以你既可以得到win的方便,也可以在真实的环境上运行.
比所谓的cgwin的模拟强多了.
举例吧,我想在linux上编译ACE,有几百个文件,几百个类吧.
我只要建立一个工程,选择向工程添加文件菜单,选中ACE_WRAPPER目录,选中递归子目录选项,过个一阵子,几百个类就跟VC一样出现在窗口上了.
这个时候我再按一下F5,就开始编译了,过个几十分钟,就编译完了.
如果你不用MAGICC++,可能要自己写Makefile文件吧.当然ACE会提供MAKEFILE,但是所谓的开源,提供的MAKRFEIL好不好用还不一定.
这时候,有人该说我水平差了,说我被MS弄傻了.呵呵.
我认为使用g++,gdb,printf的人才傻呢.
我碰见使用Linux的人,就会推荐MAGICC++的,因为是它让我帮助我从win上1天之内就转到了linux平台上.
linux开发和win应用开发没有什么区别,系统API都差不多
区别就是linux太没有人性了.
|
同感,这些问题我也想知道。