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

jingham at apple.com jingham at apple.com
Fri Dec 19 09:26:02 PST 2014


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