最近在项目上遇到一个问题,纠结了很久终于查清楚原因了。 user breakpoint called from code at XXX。场景是这样的:
程序调用了多个dll,在调试exe的时候,调试到dll时直接报该错误。但是将dll及其相应的lib库更换成debug版本,却又不再报错。exe和dll程序变成release版本没有问题。
最终发现在dll里面调用了exe导出函数,然而当初编译dll的时候debug用的是exe的debug,release用的exe的release。但是在exe调试状态,而dll,release状态的时候,dll编译连接到的exe却是release版本。造成不匹配。但dll的release版本连接的exe程序的lib库变成debug版本之后,错误消除。
此外还有网上一些朋友发出来的处理方案,就不做粘贴了。
不过有了新的知识长进:在release下,将dll 的设置成:C/C++ --general -- debug info---line number only, C/C++ ----general---optimization-- maxmize speed,
C/C++ --- general -- generate browse info, Link --- General -- Generate debug info , link incrementally , generate map file 选择上即可在debug 状态下也能进入到release的dll 进行源码调试。
另外,debug 下反汇编代码的查看 ALT + 8
时间: 2024-10-06 03:01:01