调试问题
pengatgstdev opened this issue · comments
可以用两个终端来搞:
- 【终端一】弹出对话框时,先别选择文件或目录。
cd trzsz-go
make clean && make
bin/trzsz bash
bin/trz -t 86400
- 【终端二】
ps aux | grep trz
找到trz
或trzsz
的进程号,假设为 12345,用dlv
附加上去:
dlv attach 12345
b trzsz.xxxXxx
c
其中 b trzsz.xxxXxx
是在某个 trzsz 的函数下断点,然后 c
继续执行,再回到【终端一】选择文件或目录,然后就可以在【终端二】愉快地调试了。
谢谢, 有空我试试
trzsz ssh 是登录到远程服务器,trzsz bash 还是在本机,本机有 trz 和 tsz 就可以上传和下载了,就是本机传给本机。实际一般不会这样用,但是调试可以这么玩,不需要服务器,只要一台机就能搞。
你是在远程服务器上运行 trzsz ?
选文件时弹窗会依赖图形界面,就是那个叫 zenity 的程序,桌面版 Ubuntu 应该会默认安装的。
我说的调试只用一台机,是指本地这台,有界面的。
dlv 前面加个 sudo 就可以了。
因为这个时候它正在执行系统调用。你下个断点,例如 b trzsz.sendConfig
,然后 c
让它继续执行,再去对话框那里选个文件,就会停在断点处了。注意你下的断点是要有机会运行到的,才可以。
感谢,可以了
之前一直不明白ssh穿越多个主机 A->B->C后, trzsz怎么传输文件到C主机;
粗略的看了下源码, 客户端上传文件, 服务端trz设置term.MakeRaw之后, 等待客户端输入(类似输入密码那样, 输入的字符不可见,客户端的文件内容输入对用户无感知), trz按字节流接收.
不知道我理解的是否正确?
release v0.1.8体积大幅缩小, 是用gcc-go编译的吗?
差不多就是这样。v0.1.8 用 goreleaser 编译的,它默认把调试符号给干掉了。
哦谢谢