• linux服务端c++开发工具介绍(vscode版)


    本文适合于有一定c++开发经验,但是还不明确如何到linux服务端开发程序的同学。

    一、vscode

    几年前用的是ssh到云服务上,再用vim在云上开发的形式

    1. ssh dongbeijing.dbj@11.158.142.176
    2. vim hello.c

    现今,由于vscode比较好用,这几年换了vscode内部配置ssh到云服务上开发,插件名称是Remote SSH

    输入密码,选择目录打开后,确认正常后,可以保存为workspace,方便重复使用 。

    二、shell工具

    ssh免密登陆

    云服务:

    1. ssh-keygen -t rsa
    2. # 文件名 auth
    3. Enter file in which to save the key: auth
    4. cat ~/.ssh/auth.pub >> ~/.ssh/authorized_keys
    5. chmod 644 ~/.ssh/authorized_keys

    本地开发机器:

    scp dongbeijing.dbj@11.158.142.176:~/.ssh/auth ~/.ssh

     vscode指定ssh配置路径为~/.ssh/config

    config文件为

    1. Host 11.158.142.176
    2. HostName 11.158.142.176
    3. User dongbeijing.dbj
    4. IdentityFile ~/.ssh/auth

    文件拷贝

    切换root账号

    sudo bash -c bash

    查看文件大小

    du -sh /tmp/test.pcap

    scp复制

    1. # 本地机器执行
    2. scp dongbeijing.dbj@11.114.12.212:/tmp/test.pcap ./

    或者用osscmd上传到云上oss存储。

    osscmd put test.pcap oss://myworkspac/network/pcap

    或者用sz工具直接复制

    sz test.pcap

    线上抓包

    保存文件,用wireshark看

    tcpdump -i eth0 host 111.63.213.231 and port 31586 -w /tmp/test.pcap

    用enn和vvv,线上直接看

    tcpdump -i bond0.715 udp port 1106 and host 44.123.42.3 -enn -vvv

    弱网模拟

    ip不通

    1. # 添加
    2. sudo iptables -A INPUT -s 127.0.0.1 -p udp -d 127.0.0.1 --sport 33698 -j DROP
    3. # 删除
    4. sudo iptables -D INPUT -s 127.0.0.1 -p udp -d 127.0.0.1 --sport 33698 -j DROP
    5. # 查询
    6. sudo iptables -L -n -v

    丢包延迟

    1. ## === 添加
    2. sudo tc qdisc add dev lo root handle 1:prio
    3. # 延迟300ms 丢包15%
    4. sudo tc qdisc add dev lo parent 1:3 handle 30:netem loss 15% delay 300ms
    5. # 生效
    6. sudo tc filter add dev lo protocol ip parent 1:0 u32 match ip sport 33698 0xffff flowid 1:3
    7. ## === 删除
    8. sudo tc qdisc del dev lo root
    9. ## === 查看
    10. sudo tc qdisc show dev lo
    11. sudo tc fliter show dev lo

    网络请求

    curl模拟http请求

    curl -v 'http://myhello.com' -o /dev/null -x 127.0.0.1:10080

    模拟100次curl的方法

    for((i=1; i<=100; i++)); do curl -s "www.helloworld.com"; done

    tsar查看cpu状态

    tsar --cpu --percpu -i1 -n1 | less |grep 19:30

    dmseg查看启动信息

    1. dmesg -T # 启动信息
    2. cat /var/log/mcelog # 硬件信息
    3. tsar --cpu -I percpu -i1 -n1 # n1表示只输出1次

    查看网络信息

    1. ifconfig
    2. ip route # 如果显示bond,那么是逻辑网卡
    3. ping 127.0.0.1
    4. ethtool -k eth0 # 网卡硬件加速
    5. ip route | grep lock

    三、版本管理

    git代码

     我使用的GitLens,方便可视化可blame信息,当然在vs code的扩展商店里,搜Git也有其他工具。

    rpm版本

    rpm -qa|grep helloworld

    四、gdb

    vscode插件

    插件名称是Remote Development,需要配置launch.json,指定远程启动目录。

    云服务端需要配置gdbserver,其中2333是vscode的默认gdb链接端口。

    sudo localhost:2333 hello.out -c config.txt

    gcore进程

    gcore单个进程,产生core dump,用gdb可以看到各个变量的情况。

    gdb函数

    参考示例

    1. define print_connections
    2. set $i=0
    3. while $i<1000
    4. set $c=ngx_cycle.connections[$i]
    5. if $c.fd > 0
    6. if $c.read.handler==ngx_rtmp_recv
    7. set $s=(ngx_rtmp_session_t*)$c.data
    8. p $i
    9. p $s.params
    10. end
    11. end
    12. set $i=$i+1
    13. end
    14. end

    pstack

    查看进程的堆栈情况,如何进程一直卡在相同的堆栈里,那么大概率是死循环了。

    pstack 1234 #进程号是1234

    套接字

    查看进程的套接字创建是否正常

    ss -alp|grep 1234 # 进程号 1234

    五、vim和tail

    主要会i、a、GG和ctrl+d/u等,满足看日志需求

    动态看日志的方法

    tail -f error.log | grep "hello world, times:"
  • 相关阅读:
    15_TypeScript
    MySql数据库基础篇-增删改查
    Netty
    Scala第十七章节
    openjudge 1.5.23 药房管理
    Mock安装及应用
    Kubernetes(k8s)介绍
    论文阅读---DeLF: Designing Learning Environments with Foundation Models
    Spring实例化源码解析之ComponentScanAnnotationParser(四)
    刷爆力扣之非递减序列
  • 原文地址:https://blog.csdn.net/dong_beijing/article/details/133497911