首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于peverify错误的问题

关于peverify错误的问题
EN

Stack Overflow用户
提问于 2010-07-07 23:41:05
回答 2查看 655关注 0票数 1

当我对我的.NET exe运行peverify实用程序时,我得到一些错误(类,重命名的方法):

代码语言:javascript
复制
[IL]: Error: [myapp.exe : namespace.class::method1][offset 0x00000027]
Instruction cannot be verified.

[IL]: Error: [myapp.exe : namespace.class::method2][offset 0x00000027]
Instruction cannot be verified.

[IL]: Error: [myapp.exe : namespace.class::method3][offset 0x00000313]
Instruction cannot be verified.

这是我应该关注的事情吗?这些方法都使用了unsafe关键字,我认为这就是导致这个错误的原因。但是我在网上找不到任何关于这个错误的文档,所以任何想法都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-08 01:10:16

这并不是因为你使用了unsafe关键字。这是因为你编写了编译的代码,因为你使用了unsafe。是的,peverify会对这样的代码犹豫不决。这就是不安全的本质。你不能在这里既吃蛋糕又吃蛋糕。

票数 3
EN

Stack Overflow用户

发布于 2010-07-08 03:26:41

你在这些方法中使用stackalloc了吗?在我尝试这一点的时候,我发现如果stackalloc是第一次出现不可验证的代码,那么peverify就会吐出错误消息,并忽略方法的其余部分。然而,事实并非如此。如果稍后在方法中出现stackalloc,则其他错误将在stackalloc语句生成的错误之前出现。也许这就是bug?

考虑下面的例子。

代码语言:javascript
复制
public static void Main()
{
  unsafe
  {
    int* a = stackalloc int[100];
    int* b = null;
  }
}

我得到了以下结果:

代码语言:javascript
复制
[IL]: Error: [myassembly.exe : A.Program::Main][offset 0x00000007] Instruction cannot be verified. 
1 Error(s) Verifying myassembly.exe

但是,如果我注释掉stackalloc行,则会得到以下结果:

代码语言:javascript
复制
[IL]: Error: [myassembly.exe : A.Program::Main][offset0x00000004][found Native Int][expected unmanaged pointer] Unexpected type on the stack. 
1 Error(s) Verifying myassembly.exe
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3196399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档