/ / tornando o valgrind capaz de ler a entrada do usuário quando o c ++ precisar - c ++, entrada do usuário, valgrind

Tornando o valgrind capaz de ler a entrada do usuário quando o c ++ precisar - c ++, entrada do usuário, valgrind

Eu estou tentando executar o meu programa c ++ com valgrind,no entanto eu tenho alguns pontos no programa que exigem entrada do usuário de stdin, mas quando eu corro com valgrind, ele não deixa o usuário digitar nada para o programa, existe alguma maneira de contornar isso?

Estive procurando por todos os lados, mas não encontrei a resposta.

Respostas:

2 para resposta № 1

Eu não tentei, mas achei isso nas man pages:

--input-fd=<number> [default: 0, stdin]
Specify the file descriptor to use for reading  input  from  the
user.  This  is  used whenever valgrind needs to prompt the user
for a decision.

O que acontece se você especificar um fd diferente (digamos, 3) para o valgrind usar para entrada?


1 para resposta № 2

Aqui está um exemplo do Linux onde um programa cgi (./ myexe) lê a partir de stdin. Colocamos a entrada em um arquivo mystdin. Então valgrind pode ler a entrada do terminal, nós fazemos o --input-fd = 3 e diz ao shell para redirecionar / dev / tty para o descritor de arquivo 3. Para que possamos controlar o gdb, adicionamos um redirecionamento de stdin de / dev / tty no parâmetro --db-command para valgrind. Este é provavelmente um exemplo de caso pior. Espero que ajude.

valgrind --input-fd=3 --db-command="gdb -nw %f %p < /dev/tty" --db-attach=yes ./myexe < mystdin  3</dev/tty