trzsz / trzsz-go

trzsz-go is the go version of trzsz, makes all terminals that support local shell to support trzsz ( trz / tsz ).

Home Page:https://trzsz.github.io/go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

调试问题

pengatgstdev opened this issue · comments

dlv 运行trz, 输出::TRZSZ:TRANSFER:R:0.1.5:3610954265561之后, 就无法再下运行了, 除非Ctrl+c;
由于trz要运行在trzsz中, 有什么好的办法调试trz吗?
图片

可以用两个终端来搞:

  1. 【终端一】弹出对话框时,先别选择文件或目录。
cd trzsz-go
make clean && make
bin/trzsz bash
bin/trz -t 86400
  1. 【终端二】ps aux | grep trz 找到 trztrzsz 的进程号,假设为 12345,用 dlv 附加上去:
dlv attach 12345
b trzsz.xxxXxx
c

其中 b trzsz.xxxXxx 是在某个 trzsz 的函数下断点,然后 c 继续执行,再回到【终端一】选择文件或目录,然后就可以在【终端二】愉快地调试了。

谢谢, 有空我试试

trzsz bash 是什么操作?在trz -t 86400之前执行trzsz bash,报以下错误:
图片

不执行trzsz bash, 直接运行trz -t 86400, dlv attach 15390, 进入汇编代码了
图片

trzsz ssh 是登录到远程服务器,trzsz bash 还是在本机,本机有 trz 和 tsz 就可以上传和下载了,就是本机传给本机。实际一般不会这样用,但是调试可以这么玩,不需要服务器,只要一台机就能搞。

在trz -t 86400之前执行trzsz bash,报错呢, 版本0.1.7
图片

你是在远程服务器上运行 trzsz ?

选文件时弹窗会依赖图形界面,就是那个叫 zenity 的程序,桌面版 Ubuntu 应该会默认安装的。

我说的调试只用一台机,是指本地这台,有界面的。

上午是在远程服务器上运行 trzsz ,

刚才两个终端全在本地
图片
图片

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 编译的,它默认把调试符号给干掉了。

哦谢谢