Как проследить программу с ее самого начала, не выполняя его как корень

ПРАВОВАЯ ОГОВОРКА: Я не программист на C++, однако я знаю C действительно хорошо. Я adapated, который кодируют эти вызовы от некоторого C, я имею.

Также скидка с цены поместила эти странные _ как мои подчеркивания.

необходимо просто быть в состоянии записать класс абстракции вокруг сокетов C с чем-то вроде этого:

class my_sock {
    private int sock;
    private int socket_type;
    private socklen_t sock_len;
    private struct sockaddr_in server_addr;
    public char *server_ip;
    public unsigned short server_port;
};

Тогда имеют методы для открытия, закрытия и отправки пакетов вниз сокет.

, Например, прослушивание могло бы выглядеть примерно так:

int my_socket_connect()
{
    int return_code = 0;

    if ( this->socket_type != CLIENT_SOCK ) {
        cout << "This is a not a client socket!\n";
        return -1;
    }

    return_code = connect( this->local_sock, (struct sockaddr *) &this->server_addr, sizeof(this->server_addr));

    if( return_code < 0 ) {
        cout << "Connect() failure! %s\n", strerror(errno);
        return return_code;
    }

    return return_code;
}
11
задан Peter Hosey 30 July 2009 в 03:11
поделиться

3 ответа

Создайте программу запуска, которая будет ждать какого-либо сигнала (не обязательно буквального сигнала, просто индикации того, что он готов), а затем exec () вашей цели. Теперь dtrace -p программа запуска, и как только dtrace будет запущена, отпустите программу запуска.

2
ответ дан 3 December 2019 в 06:22
поделиться

Если другой ответ вам не подходит, можете ли вы запустить программу в gdb, прервать main (или даже раньше), получить pid и запустить скрипт? Я пробовал это в прошлом, и, похоже, это сработало.

3
ответ дан 3 December 2019 в 06:22
поделиться

Что-то вроде sudo dtruss -f sudo -u сработало для меня, но потом мне стало не по себе.

Я сообщил об этом в радаре и получил он закрыт как дубликат № 5108629.

6
ответ дан 3 December 2019 в 06:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: