Вы можете проверить разницу между предварительно обработанным выводом в каждой версии.Например:
gcc -dD -E a.cc -o a.pre
gcc -dD -E b.cc -o b.pre
diff -u a.pre b.pre
Вы можете поэкспериментировать с различными настройками "-d", чтобы сделать это более подробным / кратким.Может быть, что-то в разнице списков будет очевидно.Обычно это что-то вроде структуры, которая изменяет размер в зависимости от включаемых файлов.
В противном случае, если вы действительно хотите связываться с каждой инструкцией или трассировкой строки, вы, возможно, могли бы использовать valgrind и посмотреть, где пути расходятся, ноЯ думаю, что вы можете быть в мире боли.На самом деле вы, вероятно, обнаружите, что valgrind находит вашу ошибку, а затем 100, о которых вы не знали :) Я ожидаю, что проблема заключается только в разнице в структуре или другом размере данных, и вам не нужно беспокоиться.
Вы можете получить GDB для автоматизации трассировки строк.Было бы довольно больно.В основном вам нужно было бы написать его, чтобы он запускал «n» (следующая строка) до сбоя, а затем проверял логи.Если вы можете написать «b main», то «run», а затем бесконечное «n», которое сделает это.Вероятно, для этого есть встроенная команда, но я об этом не знаю.