Установка точки останова с помощью GDB, когда один и тот же исходный файл используется несколько раз - PullRequest
1 голос
/ 11 октября 2011

У меня есть исходный файл foo.c, который имеет следующую реализацию функции:

#include "header.h"
void PREFIX(function_name)(){
   ...
}

Я скопирую этот файл в две директории (dir1 и dir2). В dir1 у меня есть header.h вот так:

#define PREFIX(a) prefix1_ ## a

и в dir2 у меня есть header.h вроде:

#define PREFIX(a) prefix2_ ## a

Поэтому во время процесса связывания у меня будет два разных имени функции.

Моя проблема возникает, когда я хочу использовать gdb для отладки этой функции, и мне нужно установить точку останова в определенной строке в этой функции. Если я сделаю:

b foo.c:235

и 235 - это строка внутри реализации функции, в какой функции GDB будет фактически устанавливать точку останова? prefix1_function_name или prefix2_function_name?

Есть ли способ заставить gdb установить точку останова на обоих?

Спасибо!

1 Ответ

3 голосов
/ 11 октября 2011

Почему бы просто не попробовать? Когда я попробовал, он установил точку останова в обоих файлах:

(gdb) break a.c:5
Breakpoint 1 at 0x100000e87: file 3/a.c, line 5.
Breakpoint 2 at 0x100000e75: file 2/a.c, line 5.
warning: Multiple breakpoints were set.
Use the "delete" command to delete unwanted breakpoints.

Если вы хотите взломать только определенный файл, просто используйте полный путь к этому файлу для устранения неоднозначности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...