是否可以使用Address Sanitizer提取有关指针的信息?我需要每个指针的位置(代码中的行号)和指针的目的地(初始化指针的行号),即使代码中没有错误。
ASan 详细的错误报告日志没有说明完整的指针映射,只说明发生错误的行号,通常还包括分配/释放内存的行号。
是否可以使用Address Sanitizer提取有关指针的信息?
不。 Address Sanitizer 根本不跟踪指针。它只跟踪内存块的状态(有效、已释放、从堆栈弹出等)。
您可以在此处阅读有关 Address Sanitizer 实施细节的信息。
我所知道的唯一真正记录所有指针状态以及这些指针指向哪些内存块的工具是Insure++。然而,它是一个商业工具,虽然它确实有完整的指针地图,但它没有设置为以任何有用的方式打印该地图。