Как установить только одну точку останова в одном месте при использовании rbreak? - PullRequest
0 голосов
/ 12 октября 2019

ОК, мне нужно исследовать MySQL внутреннюю информацию транзакции, но я знаю только, что работа транзакции была связана с mysql-server/storage/innobase/trx/trx0sys.cc mysql-server/storage/innobase/trx/trx0trx.cc или чем-то еще, так что вот идея, я устанавливаю контрольные точки для всех функций, там есть этифайлы с:

(gdb) rbreak /home/work/workspace/mysql-server/storage/innobase/trx/trx0sys.cc:*

Затем я буду запускать некоторые DML, такие как:

mysql> insert into test values(2, 'test');

Теперь я потрачу время, чтобы посмотреть, где точки останова достигают первой, а какие следующие, чтобы изучитьтранзакция реализует.

Дело в том, что rbreak, это было совпадение с регулярным выражением, оно каким-то образом будет устанавливать точки останова несколько раз для какой-то функции, просто заметил меня так:

Breakpoint 1430 at 0x5620824f3587: file /home/work/workspace/mysql-server/storage/innobase/trx/trx0sys.cc, line 217.
void trx_sys_update_mysql_binlog_offset(char const*, long, unsigned long, mtr_t*);
Note: breakpoints 831, 839, 847, 855, 863, 871, 879, 887, 895, 903, 911, 919, 927, 935, 943, 951, 959, 967, 975, 983, 991, 999, 1007, 1015, 1023, 1031, 1039, 1047, 1055, 1063, 1071, 1079, 1087, 1095, 1103, 1111, 1119, 1127, 1135, 1143, 1151, 1159, 1167, 1175, 1183, 1191, 1199, 1207, 1215, 1223, 1231, 1239, 1247, 1255, 1263, 1271, 1279, 1287, 1295, 1303, 1311, 1319, 1327, 1335, 1343, 1351, 1359, 1367, 1375, 1383, 1391, 1399, 1407, 1415 and 1423 also set at pc 0x5620824f3920.

Это остановится на одном и том же месте более одного раза и замедлит процесс отладки, как не устанавливать точку останова, если она уже есть.

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