GVKun编程网logo

VCS课时2:VCS的Debug和UCLI(vcs debug)

14

本文将介绍VCS课时2:VCS的Debug和UCLI的详细情况,特别是关于vcsdebug的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于andro

本文将介绍VCS课时2:VCS的Debug和UCLI的详细情况,特别是关于vcs debug的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于android – Gradle assembleDebug和preDexDebug因CircleCI而失败、ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码、asp.net-mvc – asp.mvc视图在发布配置中引用#IF DEBUG、asp.net-mvc-3 – 使用csvhelper(nuGET)和C#MVC导入CSV文件的知识。

本文目录一览:

VCS课时2:VCS的Debug和UCLI(vcs debug)

VCS课时2:VCS的Debug和UCLI(vcs debug)

课前回顾

仿真事件队列指的是计算机按照一定的顺序执行我们的代码,设计工程师知道一些有关概念,出现了错误能够理解

VCS是一个编译型的仿真器,编译得到了二进制可执行文件

1.VCS的Debug

PPT1 课程目标

Unit Objectives

After completing this unit, you should be able to:

  • Describe three methods of debugging Verilog code using VCS
  • Invoke UCLI debugger
  • Debug Verilog designs using UCLI

PPT2 VCS Debug Support

专业的Debug工具 Verdi(Linux) Debusy(Windows)

开始关注的功能,工程的时候要考虑

  • 速度(开关选项会影响,消耗波形资源,什么级别的仿真,速度上:行为级>RTL级>门级)
  • 可见性和可追踪性(医生询问病人,咨询问题,根据回答定位问题出在哪儿)
  • 可用性, 命令行去Debug比较麻烦,DVE比较方便

PPT3 Debug系统函数

  1. display是赋值前的值,monitor是赋值后的值,在的不同区,前者在active区,后者在monitor区
  2. time是仿真的时间,仿真时间和CPU执行时间
  3. readmemh读RAM 读ROM 读FIFO,等效为一个数组,将初始化的数据写在一个文件里,读取16进制. readmemb读取二进制的

PPT4 嵌入系统函数

包括DUT, DUT的例化,监视输出信号,激励的生成,结果的验证,完成测试(finish,stop)

  1. stop相当于一个断点,点run继续往下跑
  2. finish相当于仿真已经结束

2.通过命令行(不推荐)

PPT1

PPT2 编译调用UCLI Debug

$vcs sorce.v -debug|debug_all|debug_pp -R -ucli # 一步走
# 其他的

VCS的安装目录下有相应的手册

PPT3

PPT4

老的命令和新的命令的对比

PPT5

PPT6 使用UCLI的例子

总结:这样的方法太笨拙了

3.仿真时出现的问题

PPT1

出现卡死 杀死进程,发现卡死的仿真时间和对应的代码
编译时候加上`debug-all`选项

PPT2

4.利用命令行进行仿真的实验

android – Gradle assembleDebug和preDexDebug因CircleCI而失败

android – Gradle assembleDebug和preDexDebug因CircleCI而失败

我尝试使用CircleCI汇编调试器,但它必须无法构建(preDex).
为什么我不能这样做?

>使用ProductFlavor(名称为生产)
> Android Gradle ver.1.1.0-rc1

问题

./gradlew assembleProductionDebug died unexpectedly Building 92%3% >
:app:preDexProductionDebugaction ./gradlew assembleProductionDebug
Failed

circle.yml

general:
  artifacts:
    - "app/build/outputs/apk/app-production-release-unaligned.apk"
machine:
  java:
    version: openjdk7
  environment:
    ANDROID_HOME: /usr/local/android-sdk-linux

dependencies:
  pre:
    - echo y | android update sdk --no-ui --all --filter "build-tools-21.1.2"
    - echo y | android update sdk --no-ui --all --filter "platform-tools"
    - echo y | android update sdk --no-ui --all --filter "tools"
    - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services"
    - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
    - echo y | android update sdk --no-ui --all --filter "extra-android-support"
    - echo y | android update sdk --no-ui --all --filter "android-21"
    - git submodule sync
    - git submodule update --init
  cache_directories:
    - ~/.android
    - ~/android
  override:
    - ./gradlew dependencies

test:
  override:
    - ./gradlew test

deployment:
  master:
    branch: master
    commands:
      - ./gradlew assembleProductionDebug

解决方法

我遇到过同样的问题.事实证明,我必须为ci版本禁用preDex.

把它放在root build.gradle中:

project.ext.preDexLibs = !project.hasProperty('disablePreDex')

subprojects {
    project.plugins.whenPluginAdded { plugin ->
        if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
            project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
        } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
            project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
        }
    }
}

然后,您可以使用以下命令构建ci:

./gradlew ... -PdisablePreDex

ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码

ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码

I:关于如何Debug进MVC3源代码.

1.关于ASP.NET MVC3的源代码获取方法

ASP.NET MVC从1.0到3.0版本以来它的源代码是完全对外开放的,也正因为这个原因吸引了不少以前习惯使用WebForm的开发人员转向研究MVC,在这里也很”高兴”各位IT业界内的朋友们不断地向MS反馈信息..才有了今天的MVC3版本号的出现..也不知下一个版本会.......
转回原题它的源代码托管在微软的codeplex上,下面的连接为ASP.NET MVC的项目地址,大家可以很方便地获取到它:

http://aspnet.codeplex.com/wikipage?title=MVC&referringTitle=Home

下载下来以后.我们查看一下源代码包内的各各MVC部件的分布情况:

MVC3源代码包文件名为:mvc3-rtm-sources.zip

下面一图介绍了MVC3中最主要的几个程序集在源代码包中的具体位置

2.下面开始介绍如何创建一个可Debug进MVC3源代码的Visual Studio MVC项目

首先我们从VS2010新建一个空白的解决方案dotNetDR_MVC3_ExampleProject,然后在VS中关掉这个解决方案,接着把解决方案文件复制到
mvc3-rtm-sources文件夹(也就是你解压MVC3源代码文件出来的那个位置,在这里我的路径比较长.我的位置是:
D:\SVN_WorkFolder\dotNetDR\Project\Code\mvc3-rtm-sources,各位朋友请根据自身实际情况进行相关操作).

然后依次添加如下MVC项目文件到我们所建立的空白解决方案当中,并且执行编译,最终的解决方案资源管理器图为:

在此我电脑上面编译期间一路顺风顺水!无Error无Warning!~_~....

接着我们建立一个名为WebApp的解决方案文件夹然后添加一个名为MVC3_App1的新建MVC3项目.然后移除原来从GAC内引用过来的MVC3程序集,再添加引用本解决方案内当中的各个MVC3项目:
 
最后Mvc3_App1的情况为:
 

接着Web项目编译是完成的.但是你运行的话就悲剧了.因为本地程序集和GAC的程序集冲突了.

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection. Type A originates from ''System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'' in the context ''Default'' at location ''C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll''. Type B originates from ''System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'' in the context ''Default'' at location ''C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\7c2060f6\6145b34e\assembly\dl3\9036b7c7\fc8023c0_73fecb01\System.Web.WebPages.Razor.DLL''.



之前我曾有过卸载掉在GAC当中的MVC3程序集的想法,但最终因该程序集和Microsoft Windows Installer有关联而无法用gacutil /uf来卸只能另寻其他办法.

最后几经折腾,终于明白了引起冲突的具体原因:

幸亏之前的做法尝试失败,真正的原因其实还是因为在Web Pages 1.0中他在web.config内新增了一个配置节点,我目前可以肯定的是开发人员可以根据需要而取消掉默认MVC3配置环境就在这个新增的节点当中.当然这要求开发人员比较深入地了解MVC3才行

Web Pages 1.0在Web.config中目前我已发现到新增了一个配置节点:
路径在~/Views/web.config.而不是web.config.至于web.config能否使用?还有待研究.

<configuration>
  <system.web.webPages.razor /> <!--注意他于常用的system.web同级-->

  <system.web />
  ...
</configuration>

关于这个配置节点的说明目前我还没找到MSDN上有具体的英文介绍.而只是能找到相关的类库成员列表.而详细的介绍说明还未完善.还得等待MS的文档工作人员完善.~

接着我们可以打开他并修改相关的PublicKeyToken为null.设置可以让.NET Runtime引用我们解决方案中的未签名MVC3源代码项目而非用GAC当中引用.这样的话可以解决掉之前出现的同名类型在不同的程序集中发生冲突的可能性.~这个特性也是.NET相比以前的XX(冒似是COM+这类,作者不太了解那个年代的东西)改进了同名不同版本的类库冲突

下面进行修改我们的MVC3_App1项目内的~/Views/web.config文件

<xml version="1.0">

<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"><!--这行要改-->
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" requirePermission="false" /><!--这行要改-->
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" requirePermission="false" /><!--这行要改-->
    </sectionGroup>
  </configSections>

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" /> <!--这行要改-->
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
...



接着修改~/web.config文件

<configuration>
  <connectionStrings />
  
  <appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <!--这行要改-->
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" />
        <!--这行要改-->
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
      </assemblies>
    </compilation>
    ...
  </system.web>
  ...
</configuration>

在这里我发现了有一处硬编码了这个PublicKeyToken的地方:
位于项目System.Web.WebPages.Deployment中的PreApplicationStartCode.cs文件Line 24:

待我深入了解好了.在向各位解释这个常量的作用

修改完成以后我们设置相关断点

断点1放置位置 at System.Web.WebPages.Deployment项目根目录内PreApplicationStartCode.cs Line:39

断点2放置位置 at Mvc3_App1项目Controllers文件夹下的HomeController.cs Line:12
再按F5去Debug一下MVC3_App1项目接着就可以顺利地debug进去了.

上图为App初始化时走的流程,我以前写的文章有介绍过WebPages脱离WebForms的运行方式,有兴趣的可以去回顾一下那篇文章.

上图可以看到运行点已经到达了Action内了.这说明我们离成功非常接近了.

直接运行下去,看到了这一个蓝页已证明我们引用的所有MVC源程序已经可以正常工作了,此时的你是否与博主一样激动呢?

经过这一折腾,这一章节就算顺利完成了,同时也为往后要了解MVC3内部工作原理开了一扇窗.


原文链接: http://www.cnblogs.com/highend/archive/2011/04/20/aspnet_mvc3_the_project_debug_in_mvc3source.html

asp.net-mvc – asp.mvc视图在发布配置中引用#IF DEBUG

asp.net-mvc – asp.mvc视图在发布配置中引用#IF DEBUG

我有一个ASP MVC视图,其中有以下声明
#if DEBUG
  //section 1
  //do stuff
#else
  //section 2
  //do other stuff
#endif

当在visual studio中,我从下拉列表中选择发布配置来进行构建,代码仍然在步骤1中。

在解决方案配置属性中,解决方案的所有子项目都设置为发布配置。

我没到这里吗

解决方法

重要的是要明白,您的项目有两个完全独立的汇编。第一个是在Visual Studio中执行的操作。第二个是ASP.NET在页面投放之前所做的工作。您的视图中的if DEBUG是在第二步完成的。您描述的发布版本是第一步。因此,您的项目的调试/发布设置与Web.config / ASP.NET编译器中的调试设置无关。

此外,您的Visual Studio构建将完全不适合更改Web.config中的调试设置。这些是两个单独的汇编,一个不应该影响另一个。

另一方面,当您在Visual Studio中进行调试时,您可能有一个完全合理的需求,使您的视图行为不同,您可以这样做。您只需要将视图之外的“if”语句移动到由Visual Studio编译的东西中,而不是ASP.NET。我们用一个HTML助手来做这个。例如:

/// <summary>
        /// Returns the HTML to include the appropriate JavaScript files for 
        /// the Site.Master.aspx page,depending upon whether the assembly 
        /// was compiled in debug or release mode.
        /// </summary>
        /// <returns>HTML script tags as a multi-line string.</returns>
        public static string SiteMasterScripts(this UrlHelper helper)
        {
            var result = new StringBuilder();
#if DEBUG
            result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>",helper.Content("~/Content/js/MicrosoftAjax.debug.js"));
#else
            result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>",helper.Content("~/Content/js/MicrosoftAjax.js"));
#endif
        // etc. ...

这包括在Visual Studio中以调试配置运行时的调试JS文件,否则最小化JS。

asp.net-mvc-3 – 使用csvhelper(nuGET)和C#MVC导入CSV文件

asp.net-mvc-3 – 使用csvhelper(nuGET)和C#MVC导入CSV文件

通过NuGet提供的 http://csvhelper.com用于读取和写入CSV文件.

CsvHelper允许您直接将CSV文件读入自定义类.

如下所示在question之前

var streamReader = // Create a reader to your CSV file.
var csvReader = new CsvReader( streamReader );
List<MyCustomType> myData = csvReader.GetRecords<MyCustomType>();

CsvReader will automatically figure
out how to match the property names
based on the header row (this is
configurable). It uses compiled
expression trees instead of
reflection,so it’s very fast.

It is also very extensible and
configurable.

我基本上试图找出如何读取带有标题(未知名称)的CSV文件并将记录读入自定义对象.

根本没有这方面的文档,所以想知道是否有人知道如何使用CsvReader将值按顺序放入字符串数组中,或者你会如何建议处理这个?

解决方法

这是我的第一个版本,我会更新,因为我修改了一些内容并使其更加完整,但这给了我字符串数组中的所有数据.
[HttpPost]
        public ActionResult UploadFile(HttpPostedFileBase file)
        {

            ICsvParser csvParser = new CsvParser(new StreamReader(file.InputStream));
            CsvReader csvReader = new CsvReader(csvParser);
            string[] headers = {};
            List<string[]> rows = new List<string[]>();
            string[] row;
            while (csvReader.Read())
            {
                // Gets Headers if they exist
                if (csvReader.HasHeaderRecord && !headers.Any())
                {
                    headers = csvReader.FieldHeaders;
                }
                row = new string[headers.Count()];
                for (int j = 0; j < headers.Count(); j++)
                {
                    row[j] = csvReader.GetField(j);
                }
                rows.Add(row);
            }
            Importviewmodel model = new Importviewmodel(rows);
            return View(model);
        }

今天关于VCS课时2:VCS的Debug和UCLIvcs debug的介绍到此结束,谢谢您的阅读,有关android – Gradle assembleDebug和preDexDebug因CircleCI而失败、ASP.NET MVC3 系列教程 - 如何使项目Debug进MVC3源代码、asp.net-mvc – asp.mvc视图在发布配置中引用#IF DEBUG、asp.net-mvc-3 – 使用csvhelper(nuGET)和C#MVC导入CSV文件等更多相关知识的信息可以在本站进行查询。

本文标签: