2016-08-31 5 views
1

У меня есть программа, в которой я использую ioctl(0, TIOCGWINSZ, (struct winsize *)), чтобы найти размер окна терминала, в котором работает программа. Когда я запускаю его в терминале, он отлично работает, но когда я использую LLDB, ioctl дает размер окна 0 х 0Проблемы с LLDB ioctl

Пример:

#include <unistd.h> 
#include <sys/ioctl.h> 
#include <stdio.h> 

int main(){ 
    struct winsize tty_window_size; 

    ioctl(STDOUT_FILENO, TIOCGWINSZ, &tty_window_size); 

    printf("Rows: %i, Cols: %i\n", tty_window_size.ws_row, tty_window_size.ws_col); 

    return 0; 
} 

Терминал транскрипт:

$ clang test.c 
$ ./a.out 
Rows: 24, Cols: 80 
$ lldb ./a.out 
(lldb) target create "./a.out" 
Current executable set to './a.out' (x86_64). 
(lldb) r 
Process 32763 launched: './a.out' (x86_64) 
Rows: 0, Cols: 0 
Process 32763 exited with status = 0 (0x00000000) 

ли исправить это кто-нибудь, почему это происходит, или способ?

Заранее спасибо.

ответ

2

lldb использует команду pty для ввода программных данных &, но кажется, что они не настроены для отслеживания размера терминала lldb. Пожалуйста, напишите это с помощью трекера lldb.llvm.org.

Если вы на OS X, вы можете запустить приложение в отдельном окне терминала (который, вероятно, что вы хотите, если вы делаете что-нибудь фантазии с терминалом в любом случае), запуская нравится:

(lldb) запуск процесса -tty

Я не знаю, было ли это реализовано в Linux еще или нет.

+0

Спасибо, 'process launch -tty' отлично поработал! – Xenon

Смежные вопросы