[lldb-dev] inferior can't get terminal size with TIOCGWINSZ

Jay Foad jay.foad at gmail.com
Mon Dec 22 02:13:53 PST 2014


Thanks for the info. -tty doesn't seem to work in my ssh session.
Maybe I can do something clever with "screen" multiplexing.

Thanks,
Jay.

On 19 December 2014 at 17:26,  <jingham at apple.com> wrote:
> Yes, lldb doesn't share a terminal with the target the way gdb does (swapping control back and forth when the target stops & restarts.)  Instead it creates pty's for the target, and uses those.  If you need to debug a command-line program that's making use of the terminal, you should launch it in a terminal and attach to it.  On darwin, you can use the -tty option to "process launch" to get lldb to do this for you.  This may not work in an ssh session, however.
>
> Jim
>
>> On Dec 19, 2014, at 7:33 AM, Jay Foad <jay.foad at gmail.com> wrote:
>>
>> Hi,
>>
>> I've noticed that an inferior running in the same terminal as lldb
>> doesn't seem to be able to get the terminal size with TIOCGWINSZ. Is
>> this expected? I don't have the same problem with gdb.
>>
>> Test case is below, running on Darwin 14 over an SSH connection.
>>
>> Thanks,
>> Jay.
>>
>>
>> $ cat winsz.c
>> #include <stdio.h>
>> #include <sys/ioctl.h>
>> #include <termios.h>
>> #include <unistd.h>
>>
>> int main() {
>>  struct winsize size;
>>  int tty = isatty(0);
>>  int ret = ioctl(0, TIOCGWINSZ, &size);
>>  printf("tty %d ret %d row %d col %d\n", tty, ret, size.ws_row, size.ws_col);
>> }
>> $ clang -o winsz winsz.c
>> $ ./winsz
>> tty 1 ret 0 row 24 col 80
>> $ lldb winsz
>> (lldb) target create "winsz"
>> Current executable set to 'winsz' (x86_64).
>> (lldb) run
>> Process 43730 launched: '/Users/jay/winsz' (x86_64)
>> tty 1 ret 0 row 0 col 0
>> Process 43730 exited with status = 0 (0x00000000)
>> (lldb)
>> _______________________________________________
>> lldb-dev mailing list
>> lldb-dev at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>




More information about the lldb-dev mailing list