Я пытаюсь просмотреть код Postgresql, используя код Visual Studio в качестве среды IDE на Linux. Я использую присоединение к конфигурации процесса при запуске. json для достижения того же. Ниже приведен запуск. json config:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "attach",
"program": "/usr/local/pgsql/bin/postgres",
"processId": 4165,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true,
}
]
}
]
}
Когда я запускаю отладку через GUI, он подключается к процессу. Но всякий раз, когда я добавляю точку останова, я получаю следующее сообщение, напечатанное на консоли отладки:
Program received signal SIGINT, Interrupt.
0x00007ff5d084e31b in epoll_wait () from /lib64/libc.so.6
И не удается добавить точку останова. Из документации разработчика Postgres ( ссылка ) ясно, что нам нужно обойти прерывания, поступающие в gdb, выполнив следующую команду для gdb:
handle SIGUSR1 noprint pass
Я думаю, что эта команда В GDB можно выполнить только перед присоединением процесса для отладки. Следовательно, когда я запускаю эту команду через консоль отладки в коде Visual Studio, я получаю следующую ошибку:
Unable to perform this action because the process is running.
Есть ли способ указать отладке кода Visual Studio, чтобы выдать «дескриптор дескриптора SIGUSR1 noprint» "в gdb, прежде чем он присоединит целевой процесс через gdb?