1) Я не уверен в ошибке кучи, но, например, если вам не хватило памяти, она не сможет правильно обработать трассировку.Также, если повреждение кучи привело к тому, что указатель взорвал часть стека вашего приложения, из-за чего обратная трассировка была бы недоступна.
2) Если у вас включена оптимизация, это вполне возможно.Компилятор может переупорядочивать операторы, и базовая сборка, на которой была размещена точка останова, может соответствовать более поздней строке кода.Не используйте оптимизацию при попытке отладки таких вещей.
3) Это может быть вызвано тем, что исходный код не был перестроен перед выполнением (поэтому двоичный файл отличается от реального источника, или, возможно, дажеОптимизация настроек снова.