c++ - C++ Visual Studio 代码:调试以 NullReferenceException 终止:对象引用未设置为对象的实例
问题描述
我在 Visual Studio Code 中调试 C++ 时遇到了一些问题。
NullReferenceException: Object reference not set to an instance of an object
如果我尝试查看某个变量,它会崩溃。
起初我认为这可能是因为该变量已声明const
,因此编译器可能会将其编译掉,但其他const
-variables 很好(我也使用-g -O0
)。
这是我的launch.json:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/src/build_optimizer",
"args": [ ],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/build/src",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "gdb"
}
]
}
我用谷歌搜索,似乎这个错误在两三年前很常见,但据说它已在 Visual Studio C++ 扩展中修复。
我已经删除了扩展并重新安装了它。删除了我的 CMake 构建文件夹等。
任何想法可能导致此问题?
这是导致麻烦的变量:
const std::unordered_map<Item, int32_t> missing_items = Utility::get_missing_items(goal_pair, goal_recipe, initial_items);
和:
std::unordered_map<Item, int32_t> Utility::get_missing_items(const std::pair<Item, int32_t>& goal_item, const Recipe& recipe,
const std::unordered_map<Item, int32_t> ¤t_items) {
std::unordered_map<Item, int32_t> return_map;
/* do things */
return return_map;
}
我看不出这怎么可能是空的。即使它为空,Visual Studio Code 不应该将其显示为 nullptr 吗?
解决方案
推荐阅读
- amazon-web-services - 通过 AWS ELB 的 MongooseIM SSL 连接
- php - 如何在 PHPExcel 中读取合并和具有背景颜色的单元格
- java - 在运行时在 log4j.properties 文件中传递 appender.file 值
- django - 为选择字段添加额外的选项标签 - Django
- xml - XSLT 1.0 - 取消文件创建
- php - 如何打印响应soap请求的单个xml值?
- sql - SQL server Rex 获取通配符中的字符串
- php - strtotime 在错误的时区转换
- c# - 区别:除以双变量||| 除以带小数的 int 变量(例如 1 / 2.00)||| 将(双)添加到公式中
- c# - 如何检测 ASP.Net 中的 UrlReferrer 是否被欺骗?