zoukankan      html  css  js  c++  java
  • SSH Secure Shell 的使用

    一,安装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 线程号,才可以显示相关线程的栈信息。

  • 相关阅读:
    vue项目webpack配置terser-webpack-plugin 去掉项目中多余的debugger
    difference between count(1) and count(*)
    为什么PostgreSQL WAL归档很慢
    mysql_reset_connection()
    Oracle使用audit跟踪登录失败的连接信息
    .NET Standard 版本
    ASP.NET Web API版本
    我是如何用go-zero 实现一个中台系统的
    JAVA中文件写入的6种方法
    MySql 常用语句
  • 原文地址:https://www.cnblogs.com/lyr2015/p/7410826.html
Copyright © 2011-2022 走看看