总结

elvalad posted @ Jul 19, 2011 01:58:31 AM in Default , 926 阅读

下午正在床上睡觉,阿里的一个大哥打电话过来谈实习的事,现在想想还是好人多啊,只是和几个前辈们聊了下工作的事,大家都特别热心的帮助我,无论结果如何,在此都需要谢谢大家。

 
这里,我觉得有必要总结一下今天的谈话,老大是看了我的简历之后给我的电话,我简历中关于计算机技能处写了以下内容:
 
程序设计:熟练使用 c,基本了解 python,java,LATEX,bash
                        
系统平台:有两年以上使用 GNU/Linux 的经验,了解最基础的操作系统原理
 
开发工具:能够较熟练的使用 emacs,gcc,gdb,make,git 等开发工具
 
算法基础:了解基本的数据结构和算法
 
老大问了我第一个问题,说说gdb调试多进程改用什么命令啊!我愣了10s加,多亏大哥给面子人好,没为难俺,后面问的几个问题答的都还马马虎虎,但一涉及到工具的细节我都晕,还有一个是说说gdb调试时如何看堆栈,我好像记得一个info register,后来一想,这该是看寄存器的,堆栈貌似该是stack,不过老大也放我一马了。
 
最后老大布置了点儿作业,呵呵,是个python的和一个涉及到网络编程的,俺虽说是个python雏鸟,但还是得好好努力努力。总之,要特别感谢那些帮助我的人,世上还是好人多啊:)
 
最后,把几个没答好的问题整理一下,留作备份:
 
-------------------------------------------------------------------------------
0)gdb调试多进程
例如:Proc2 是 Proc1 的子进程,Proc3 又是 Proc2 的子进程,如何使用gdb对其调试
 
(实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实可以利用GDB的特点或者其他一些辅助手段来达到目的。此外,GDB 也在较新内核上加入一些多进程调试支持。)
 
a)follow-fork-mode 方法:
set follow-fork-mode [parent|child]
如果需要调试子进程,在启动gdb后:(gdb) set follow-fork-mode child,并在子进程代码设置断点。
 
由于follow-fork-mode的调试是从父进程开始的,对于fork多次子进程又有子进程的情况使用不太方便
 
b)Attach子进程
 
可以利用attach <pid>命令attach到子进程然后进行调试。要调试某个进程时,先查看此进程的pid,然后启动gdb,attach到这个进程。
 
一个新的问题是,子进程一直在运行,attach上去后都不知道运行到哪里了,这时可以在main函数开头添加一段测试代码。
 
c)VNC server配合GDB wrapper进行远程调试。
 
-------------------------------------------------------------------------------
1)git和svn的区别
GIT是分布式的,SVN不是;
GIT把内容按元数据方式存储,而SVN是按文件;
GIT分支和SVN的分支不同;
GIT没有一个全局的版本号,而SVN有;
GIT的内容完整性要高于SVN。
 
-------------------------------------------------------------------------------
 
最后我发现,在计算机技能里我谈到自己熟悉的部分,其实自己一点都不熟悉,平时如果自己用到的时候,都会google或者查手册,都没怎么记住,而且很多知识我用到的机会都不怎么多,所以,以后一定要多注意细节,细节决定成败。今天,多亏还没有问我算法的细节知识,平时写代码如果需要什么算法的时候都是临时查《算法导论》,看看伪代码,自己再实现下,过了头又忘了,现在总算知道自己的基础知识掌握的有多么不牢固了。
 
以后要养成记笔记,勤思考,多动手的好习惯,把自己看似熟悉实则不熟的东西真正牢记于心。

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter