Как заставить gdb следовать за execv? Не работает, несмотря на «follow-exec-mode»

я написал две простые программы:

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest2", argv );
}

и

int main(int ac, char **argv ) {
    execv( "/home/me/Desktop/execvtest1", argv );
}

I' скомпилировал их с gcc -g в соответствующие выходные файлы. Я использую Ubuntu 10.10, используя gcc (Ubuntu/Linaro 4.4.4-14убунту5.1) 4.4.5.

Когда я отлаживаю первую программу с помощью GNU gdb (GDB) 7.2-ubuntu, я могу перейти к первому оператору execv, но затем два файла просто продолжают работать. Даже если я установлю для режима follow-exec значение new, я не смогу войти во вторую программу. Когда я устанавливаю catch exec, gdb останавливается при каждом вызове execv (как-то без связанного исходного кода для второй программы, и я не могу выйти из gdb, так как он как бы зависает!?), но я не могу перейти через вызов в «новую» (поскольку exec заменяет процесс) подчиненную программу.

Так как же это сделать? Должен же быть способ войти в новый процесс, верно? Я делаю что-то неправильно?

Ура

8
задан Ciro Santilli 新疆改造中心法轮功六四事件 29 March 2017 в 14:24
поделиться