gpt4 book ai didi

c - 在 visual studio 中调试宏时出现问题

转载 作者:行者123 更新时间:2023-12-04 06:21:11 31 4
gpt4 key购买 nike

我在用 C 语言调试宏时遇到问题。当我尝试设置断点时,我收到消息:“不会命中断点。没有与此行关联的可执行代码...”有趣的是我可以调试文件中的所有其他内容,而不是这个宏。我已正确加载所有符号文件、清理和重建并关闭优化。关于为什么调试此宏不起作用的任何想法?

最佳答案

不了解足够的上下文(查看定义、调用和您尝试设置断点的位置可能会有所帮助),这里有一些猜测:

断点是在宏定义中还是在调用的地方设置?如果您在定义中设置它,那么这正是您会看到的错误。定义告诉预处理器在代码的其他地方进行替换,因此当代码到达编译器时,带有#define 的行已被空行替换。

如果您在使用断点的地方正确设置了断点,您确定您使用的是您认为的宏定义,并且该宏不是有条件地编译为不产生任何代码的吗?这是禁用某些东西(例如调试输出)的常用方法,并且不会在调用它的行上提供任何可执行代码(除非它周围有其他可执行代码)。检查这一点的一种方法是在宏定义旁边放置一个#error 行 - 如果它被使用,那么编译器将吐出一个错误。

请记住,宏函数只是文本替换,因此调用它们会将它们的所有代码放在调用的一行中(每次调用)。您实际上无法调试它们(在单步执行的意义上)一个“多行”宏函数),你只能跳过它们比较前后状态。这是复杂的宏函数可能不是一个好主意的主要原因之一。

关于c - 在 visual studio 中调试宏时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6538041/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com