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 № 1Eu 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