在C++ Microsoft Visual Studio 2010中调试多个环境变量的调试器

3
我遇到了一个关于Visual Studio 2010 Professional C++调试器的非常简单的问题,就是设置环境变量时出现了错误。
在这个链接中有详细介绍:
http://msdn.microsoft.com/en-en/library/kcw4dzyf.aspx
具体在“Environment (Local Windows Debugger)”段落里。
我创建了一个标准的Win32控制台项目,在项目属性的“调试器(Debugger)”中设置了环境变量。
TEST=asdf
OTHER=qwer

在_tmain(...)中打印环境变量:

cout << "Hello " << getenv("TEST") << endl;

我希望得到以下输出:

我期望一个输出:

"Hello asdf"

但是我总是得到以下结果:
"Hello asdf OTHER=qwer"

怎么解决这个问题?!


这似乎是DEU版本的一个错误。

我刚刚提交了一个错误报告: https://connect.microsoft.com/VisualStudio/feedback/details/727324/msvs10-c-deu-debugger-environment-variables-missing-linefeed#details


已经获取了所有更新。因此这是SP1。版本号为10.0.40219.1 SP1Rel。到目前为止,我已在两台不同的PC上的专业版和旗舰版进行了测试。但始终使用的是DEU版本。 - Donny
这些数据被存储在 *.vcxproj.user 文件中 - 查看一下里面的内容,看看是什么分隔字符串 - 我的文件中字符串之间有0x0a字符。 - Michael Burr
1
是的,换行符是有意义的。这就是它:<LocalDebuggerEnvironment>BLA="asdf" BLO="asdfwqe"</LocalDebuggerEnvironment>没有分隔符。但是,如果我粘贴<LocalDebuggerEnvironment>BLA="asdf"0x0aBLO="asdfwqe"</LocalDebuggerEnvironment>,它不会改变。所以这是deu版本的一个错误吗? - Donny
1
只是为了明确 - ``vcxproj.user`文件中有一个字节的数值为0x0a(即它是一个换行符),对吗?如果因使用DEU版本而导致这是一个错误,我会非常惊讶,但我认为这是可能的。 - Michael Burr
Visual Studio 2019 Community 中相同的。 - imbr
显示剩余3条评论
3个回答

1
遇到类似问题在程序中进行属性赋值时,我发现了这个github文件。在xml格式中,分隔符是"&#xA;",也就是换行符。在dot net中使用Environment.Newline解决了这个问题。
在GUI的交互模式下,您需要点击编辑按钮并使用重新运行键来拆分变量。

0
你需要使用分号或其他分隔符来分离环境变量吗?看起来TEST被赋值给了asdf OTHER=qwer,而不仅仅是asdf

1
是的,“TEST”显然被赋值给了“asdf OTHER=qwer”。我尝试了所有我能想到的分隔符,但没有一个能解决这个问题。 - Donny

0

目前最佳解决方案:

考虑您的示例:

TEST=asdf
OTHER=qwer

<Project>标签内编辑.vcxproj文件:

  <Project .... >
  ...

  <PropertyGroup Label="UserMacros">
  <TEST>asdf</TEST>
  <OTHER>qwer</OTHER>
  </PropertyGroup>

  ...
  </Project>

您也可以根据自己的喜好将此添加到*.vcxproj.user*.props文件中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接