charles-zablit wrote: > > On Windows, the ConPTY emulates a PTY. The client's terminal (the one the > > user is running lldb from) has to match the dimensions of the ConPTY so > > that the debuggee (which is attached to the ConPTY) gets proper terminal > > emulation. If there is a mismatch, lines will not wrap at the right column > > and VT sequences will be out of place. In practice, in lldb, this results > > in the (lldb) prompt being overwritten by the stdout of the debuggee. > > How do you recreate this? I guess: > > * Launch a terminal at default size. > * Resize it to non-default size. > * Launch lldb, launch the debugee > * See corrupted output > > Which would mean the tests for this are anything that expected `(lldb)`, when > run from a non-default terminal size. > > Anyway it's good to include reproduction steps in case this PR does not fix > the issue, or only partially fixes it.
The steps you gave are correct. I would replace `default size` with `current terminal size`. If the terminal lldb is running in is `X,Y` then the ConPTY's size also has to be `X,Y. We used to not properly size the ConPTY at all before and any debuggee which writes 1 or 2 lines to stdout would immediatly corrupt the output. I never figuredo out to write proper tests for it however. > > > QSetSTDIOWindowSize:cols=N;rows=N, to send the dimension of the terminal to > > the debuggee. > > Maybe this is a silly question, but above the docs for this packet are > [lldb.llvm.org/resources/lldbgdbremote.html#qsetstdin-ascii-hex-path-qsetstdout-ascii-hex-path-qsetstderr-ascii-hex-path](https://lldb.llvm.org/resources/lldbgdbremote.html#qsetstdin-ascii-hex-path-qsetstdout-ascii-hex-path-qsetstderr-ascii-hex-path). > > So here STDIO means stdout + stderr, right? stdin you don't have dimensions. > > So if some application presented two different TUIs on stdout and stderr, in > theory, both would have the correct size. (ofc for such an application you'd > want to split it into different terminals anyway, but it's the only example I > can think of) That's correct, STDIO really means stdout+stderr, stdin does not need to have dimensions. https://github.com/llvm/llvm-project/pull/201141 _______________________________________________ lldb-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
