一,安装Secure Shell ,之后会出现SSH Secure Shell client 和SSH Secure File Transfer client 两个快捷方式。
需要服务器的IP地址,用户名和密码,就连上服务器了。
二,使用SSH Secure File Transfer client 上传要运行的源程序文件。
三,编译源程序
使用命令 g++ /home/olap/lyr/main.cpp -lpthread 编译程序。
其中/home/olap/lyr/main.cpp 是源程序main.cpp的路径,此路径可以在transfer client中得到。
四,运行程序
使用命令 ./a.out
在本次试验中由于,需要线程的个数作为参数传入。因此运行命令是 ./a.out 1
其中1位线程的个数。 a.out 是编译之后产生的程序的名字。
五,程序的调试
1,在编译时产生调试信息。
使用命令 g++ -g
例:g++ -g /home/olap/lyr/main.cpp -lpthread
2,进入调试状态。
使用命令gdb --args 程序名 需要的参数
例:gdb --args a.out 31
出现以下信息:
3,运行程序
看到(gdb)命令提示符之后,输入 r ,然后回车。其中r是run的缩写,表示开始运行程序。
会出现以下信息:
4,再上一步进行2-3秒之后,不能太久,即程序还在运行过程中,按ctrl+c ,此时,程序会停下来
显示以下:
每次按Ctrl+C的时候实际是在一个随机的时间暂停的程序,那么这个时刻每个线程执行的东西就很有代表性,
表示可能很长时间这个线程都在执行这个。
5,再输入 info threads,就会显示各个线程的信息。其中带??的线程,表示该线程的运行有问题。意味着该线程陷入操作系统调用了。
6,针对有问题的线程,使用命令 thread 线程号,回车之后,再输入bt,就会显示该线程的调用栈,看看各个函数的情况,进一步发现问题。
注意,在显示线程的信息之后,输入thread 线程号之前,要是线程太多,显示要超过一屏的时候,会出现以下最后一行信息:
这时,输入q,出现(gdb)命令提示符之后,输入thread 线程号,才可以显示相关线程的栈信息。