Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用

2023-11-02

系列文章目录

前言

我们在编写代码的时候,如果用到别人的库,而别人只提供了release版本,所有我们也只能生成release版本的工程。但是,我们又想调试代码。如果我们直接调试release版本的代码也是可以的,但经常遇到编译器提示:“变量已被优化掉,因而不可用”,或者提示“未定义标识符”,这样我们在调试代码时,就看不到变量的值,而且还会遇到断点无法命中的情况,感觉好郁闷。
如果没有调整Visual Studio的配置,是无法实现release版本的单步调试功能的。

在Visual Studio一般默认有四种编译方式:
Debug, MinSizeRel, Release, RelWithDebInfo.

RelWithDebInfo模式在保留Release模式下运行快速的前提下,又可以给特定的工程开启Debug模式,进行针对性的调试。这样比整个项目都采用Debug模式进行编译,在调试时会提高效率。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码示例

#include<Windows.h>
#include<iostream>
#include<fstream>
#include<map>
#include<omp.h>
#include<string>
#include<vector>
#include<algorithm>
#include<sstream>
#include<gdiplus.h>
#pragma comment(lib,"gdiplus.lib")

#include <osg/io_utils>
#include <osg/Node>
#include <osg/Geode>
#include <osg/Geometry>
#include <osgDB/ReadFile>
#include <osgDB/WriteFile>
#include <osg/Vec3>
#include <osgViewer/Viewer>
#include <osgGA/TrackBallManipulator>
#include <osg/Texture2D>
#include <osg/Camera>
#include <direct.h>
#include <locale>
#include <codecvt>

#include "Ground_Calculate.h"
#include "MeshAnalyzer.h"
#include "myFindNodeVisitor.h"
#include "MyStruct.h"
#include "Shadow_mapping.h"
#include "SolarDirection.h"
#include "Scene_Calculate.h"
#include <math.h>


using namespace std;
using namespace Gdiplus;

#pragma   comment(linker,   "/subsystem:\"windows\"   /entry:\"mainCRTStartup\""   )

static const double pai = 3.1415926;

double radiaToAngle(double radia)
{
	double temp = radia * pai / 180.0;
	return temp;
}

string TCHAT_to_string(TCHAR* STR)
{
	int iLen = WideCharToMultiByte(CP_ACP, 0, STR, -1, nullptr, 0, nullptr, nullptr);
	char* chRtn = new char[iLen * sizeof(char)];
	WideCharToMultiByte(CP_ACP, 0, STR, -1, chRtn, iLen, nullptr, nullptr);
	string str(chRtn);

	int pos = str.find_last_of("\\", str.length());
	string exePath = str.substr(0, pos);

	return exePath;
}



string getExePath()
{
	TCHAR szExePath[MAX_PATH];
	GetModuleFileName(nullptr, szExePath, sizeof(szExePath));

	string exePath = TCHAT_to_string(szExePath);
	return exePath;
}

string getFilePath()
{
	char* path = nullptr;
	path = _getcwd(nullptr, 1);
	puts(path);

	string filePath(path);
	
	delete path;
	path = nullptr;

	return filePath;

}


//convert string to wstring
std::wstring to_wide_string(const std::string& input)
{
	std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
	return converter.from_bytes(input);
}


int main()
{
	//首先定义文件的输出位置
	//string result_location = "E:/osg/work/ThermalCharacteristics_20220628/SceneTest/output/";
	string result_location = getFilePath() + "\\output\\";
	string resultPos = getFilePath();
	string exePath = getExePath();

	//输入气象参数
	Weather weather1;
	osgDB::ifstream fin;
	double data;
	//fin.open("E:/osg/work/ThermalCharacteristics_20220628/SceneTest/model/20210408xiugai.txt");
	const char* projPath = getFilePath().c_str();
	const char* configPath = "\\model\\20210408xiugai.txt";
	const char* configFullPath = strcat(const_cast<char*>(projPath), configPath);
	//fin.open(getFilePath().c_str() + "\\model\\20210408xiugai.txt");
	fin.open(configFullPath);
	int k = 0;
	while (1)
	{
		if (fin.eof())
		{
			break;
		}
		else
		{
			fin >> data;
			fin >> data;
			weather1.vec_AirT.push_back(data);
			fin >> data;
			weather1.vec_Rh.push_back(data);
			fin >> data;
			weather1.vec_WindvSpeed.push_back(data);
			fin >> data;
			weather1.vec_Solar.push_back(data);
			//cout << k << endl;
			//k += 1;
		}
	}
	weather1.altitude = 0;//地物所在的海拔

	Weather weather;
	weather1.vec_AirT.size();
	for (int i = 0; i < 5; i++)  //weather1.vec_AirT.size();
	{
		weather.vec_AirT.push_back(weather1.vec_AirT.at(i));
		weather.vec_Rh.push_back(weather1.vec_Rh.at(i));
		weather.vec_WindvSpeed.push_back(weather1.vec_WindvSpeed.at(i));
		weather.vec_Solar.push_back(weather1.vec_Solar.at(i));
	}

	weather.altitude = 0;

	//读取osg地形文件
	//string osgpath = "E:/osg/work/ThermalCharacteristics_20220628/SceneTest/model/huailai_dem.osg";
	string osgPath = getFilePath() + "\\model\\huailai_dem.osg";
	//string osgpath = "E:\\osg\\work\\SceneTest\\model\\FZ.osg";
	MeshAnalyzer meshanalyzer;
	meshanalyzer.ReadModel(osgPath, scenechar);
}

一、解决办法

1.修改工程属性

1.C/C+±>优化->优化,修改成:已禁用(/Od)
在这里插入图片描述
2. C/C+±>所有选项->调试信息格式:程序数据库(/Zi)
在这里插入图片描述
3.连接器->调试->生成调试信息:生成调试信息(/DEBUG)
在这里插入图片描述

以上就可以实现release版本的单步调试了,而且几乎和debug版本一样可以看到变量的值了。

参考

梦里寻梦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用 的相关文章

  • 【C++】哈希算法

    目录 1 哈希映射 1 1哈希的概念 1 2哈希冲突 1 3哈希函数 1 31直接定值法 1 32除留余数法 2 解决哈希冲突 2 1闭散列法 2 11线性探测 2 12二次探测 3代码实现 3 1状态 3 2创建哈希节点类 3 21哈希表
  • 旅游攻略APP外包开发功能

    旅游攻略APP是帮助旅行者计划和享受旅行的工具 下面列出了一些常见的旅游攻略APP功能 以及在上线这类应用时需要注意的问题 希望对大家有所帮助 北京木奇移动技术有限公司 专业的软件外包开发公司 欢迎交流合作 常见功能 目的地信息 提供有关各
  • 表维护视图的F4增强

    利用SE11创建表维护视图后 我们可以通过SE51修改自动生成的屏幕来编写自定义F4以及其它事件 首先需要找到相应的FUNCTION GROUP SE80进入FUNCTION GROUP的编辑页面 修改屏幕的PBO PAI事件 出了MDL开
  • FairMOT论文阅读笔记

    Abstract 近些年目标检测和Re ID有很大的发展 但是没有人在单个网络中联合这两个任务 由于re ID任务没有公平的学习 这导致了大量id的转换 不公平之处在于两个方面 1 他们将重新身份识别视为次要任务 其准确性在很大程度上取决于

随机推荐

  • ubuntu ip地址修改

    图形界面化修改 新版本的修改方式 vim etc netplan 00 installer config yaml This is the network config written by subiquity network ethern
  • 常用 c++ github 项目汇总

    GitHub fmtlib fmt A modern formatting library GitHub gabime spdlog Fast C logging library
  • PS色彩原理

    色彩 六大色调的构成 纯色调 优点 刺激 直接 活力促销 缺点 廉价 缺少品质感 明色调 优点 年轻 阳光 活力 明朗 干净 缺点 缺少档次 淡色调 优点 天真 女性 纤细 轻快 高档 女性专属色 缺点 单薄 软弱 女性专属色 白色调 优点
  • mac os 10.12安全性与隐私没有任何来源的解决办法

    到mac os10 12后 有很多签名不对的软件安装会装不了 比如 解决办法如下 在命令行中输入 sudo spctl master disable 这样就可以在系统偏好设置 安全性与隐私中看到任何来源了 这样像很多本来安装不了的软件又可以
  • ValidPalindrome(回文字符串的判断)

    author LemonLin Description StringValidPalindrome date 2019 5 9 16 40 Given a string determine if it is a palindrome con
  • TensorFlow:数据集加载

    TensorFlow 数据集加载 数据集加载 数据集加载 1 keas datasets tensoflow keras提供了keras datasets的接口 常见的数据集 Boston housing price regerssion
  • 正则的校验

    验证版本号的正则表达式 要求 必须是三位 x x x的形式 每位x的范围分别为1 99 0 99 0 99 不允许的情况0 x x 01 x x x 0x x x 00 x x x 00 x x 0x 满足这些条件的正则为 1 9 d 1
  • shell 批量创建多个用户(导入用户表)

    批量创建用户和密码 查看 创建成功 复制代码 bin bash ULIST cat root user txt for UNAME in ULIST do useradd UNAME echo 123456 passwd stdin UNA
  • 记录素材帖,日常吐槽帖

    本人考研繁忙 无暇写博客 明年暑假腹泻式更新 等我上岸 冲冲冲 C语言二维指针的表示 int ra 2 matrix js的参数代理 考研数据结构的所有重要算法 react让组件强制更新的一个损招 Taro全面更新版本的指令 c 数组传参后
  • Selenium防踩坑 - StaleElementReferenceException 解决方案

    主要内容 1 异常原因 2 解决方案 1 异常原因 在执行脚本时 有时候引用元素对象会抛出如下异常 selenium common exceptions StaleElementReferenceException Message stal
  • 企业建设数字化工厂之前需要准备哪些硬件设施

    随着数字化技术的快速发展 数字化工厂已经成为了企业建设的重要方向 数字化工厂管理系统能够提高生产效率 降低成本 保证产品质量 为企业可持续发展提供有力支持 然而 建设数字化工厂需要准备一系列的硬件设施 以确保数字化工厂的正常运行 那么企业建
  • 关于文件上传漏洞的观点(upload-labs第九关)

    关于文件上传漏洞的观点 upload labs第九关 is upload false msg null if isset POST submit if file exists UPLOAD PATH deny ext array php p
  • java-web 过滤器 & 监听器 & 拦截器

    Tomcat 的容器分为四个等级 真正管理 Servlet 的容器是 Context 容器 一个 Context 对应一个 Web 工程 在 Tomcat 的配置文件中可以很容易发现这一点 如下 Context 配置参数
  • 有关校园网无法开启wifi的简单解决方法

    作为一个新时代的大学生 没有wifi的世界就是个噩梦 以前用的猎豹wifi 但发现卸载猎豹wifi后无法登陆校园网后 果断抛弃了这个家伙 现在使用的是一个叫360免费wifi的东西 现在开着校园网客户端的情况下打开360wifi 但是问题来
  • 如何用python远程探查每天的网页访问记录

    前言 利用Python制作远程查看别人电脑的操作记录 与其它教程类似 都是通过邮件返回 利用程序得到目标电脑浏览器当中的访问记录 生产一个文本并发送到你自己的邮箱 当然这个整个过程除了你把python程序植 入目标电脑外 其它的操作都是自动
  • nginx 报错[emerg]: unknown directive “锘? in E:\nginx-1.18.0/conf/nginx.conf:3

    报错 nginx 报错 emerg 32408 14080 unknown directive 锘 in E nginx 1 18 0 conf nginx conf 3 原因 使用nginx服务时 用txt记事本打开编辑了nginx co
  • 清除浮动的五种方法以及优缺点

    方法一 额外标签法 给谁清除浮动 就在其后额外添加一个空白标签 给其设置clear both 优点 通俗易懂 书写方便 缺点 添加许多无意义的标签 结构化比较差 clear both 本质就是闭合浮动 就是让父盒子闭合出口和入口 不让子盒子
  • Python实例:用Pandas处理表格(简单的增删改查)

    目录 任务描述 实现过程 任务描述 描述 现有一个excel表格 补充SCI模板 其中包括6个子表 中科院1区 表1 JCR Q1 表2 教研室补充 表 CCF A 表 CCF B 表 CCF C 表 每个表格第一列为期刊名称 需要为这些期
  • 基于springboot+vue的网上商城管理系统,附源码+数据库+lw文档+PPT,适合课程设计、毕业设计

    1 项目介绍 在Internet高速发展的今天 我们生活的各个领域都涉及到计算机的应用 其中包括网上图书商城的网络应用 在外国网上图书商城已经是很普遍的方式 不过国内的管理网站可能还处于起步阶段 网上图书商城具有网上图书信息管理功能的选择
  • Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用

    系列文章目录 文章目录 系列文章目录 前言 一 解决办法 1 修改工程属性 参考 前言 我们在编写代码的时候 如果用到别人的库 而别人只提供了release版本 所有我们也只能生成release版本的工程 但是 我们又想调试代码 如果我们直