总要问了三个方面;
gdb调试的问题
1.如果某个程序因为有bug而core dump,而且这个bug是间歇性出现的,如何定位到bug的位置?
答:使用命令:ulimit -a查看core file size的大小,通常默认是0;然后使用命令ulimit -c unlimited将core file size的大小设置为“unlimited”;再次运行程序,当有段错误导致core dump时就会成一个core文件,例如:core.34902。然后使用命令:gdb a.out core.34902即可定位到发生段错误的位置。注意编译生成可执行文件a.out时,需要在编译选项中加入-g,如果要debug,要加入-O1 或 -O0选项。
2.如何从一个进程进入某个线程?
答:参见《gdb多线程调试》
3.gdb中使用bt命令后如何打印出栈中某个函数的栈变量?
多线程的问题
1.线程和进程的区别是什么?
2.什么时候选择进程,什么时候选择线程?
3.僵尸进程是怎么产生的,如何避免?
C++方面:
1.如何初始化const成员变量?
答:参见《C++中特殊的成员变量的初始化方法》
2.C++中动态开辟空间的方法?
答:new,delete; new[ ],delete[ ]。
3.malloc和new的区别?
答:参见《new和malloc的区别》
其他
1.遗传算法,遗传算法和梯度下降法的区别?