2016-12-02 64 views
3

我有这个简单的任务(线程)程序,我想运行但构建它需要永远(30秒或更多)。在每次运行该程序之前,都必须等待构建版本,尤其是当我想要做的只是改变一些微不足道的东西,比如在这里或那里添加Put语句时,这让人费尽筋疲力尽。Ada。建立“主”文件需要永远的任务

这是我一直在参考的程序。我正在使用GPS 2016.我是Ada的初学者。

with Ada.Text_IO, Ada.Integer_Text_IO; 
use Ada.Text_IO, Ada.Integer_Text_IO; 

procedure Main is 
task First_Task; 
    task body First_Task is 
    begin 
     for Index in 1..4 loop 
     delay 2.0; 
     Put("This is in First_Task, pass number "); 
     Put(Index, 3); 
     New_Line; 
     end loop; 
    end First_Task; 

    task Second_Task; 
    task body Second_Task is 
    begin 
     for Index in 1..7 loop 
     delay 1.0; 
     Put("This is in Second_Task, pass number"); 
     Put(Index, 3); 
     New_Line; 
     end loop; 
    end Second_Task; 

    task Third_Task; 
    task body Third_Task is 
    begin 
     for Index in 1..5 loop 
     delay 0.1; 
     Put("This is in Third_Task, pass number "); 
     Put(Index, 3); 
     New_Line; 
     end loop; 
    end Third_Task; 

begin 
for Index in 1..5 loop 
delay 0.7; 
     Put_Line("This is in the main program."); 
end loop; 
end Main; 
+0

不错的MCVE! FSF Gnat 4.9.3(Debian Jessie)只需几秒钟就可以完成它(基本的文本编辑器,在控制台中是'gnatmake main.adb')。听起来像是一个GPS安装问题,我想我们需要知道您的操作系统以及你安装了GPS,看看是否有人可以复制。或者转到'getadanow.com'查看是否有合适的选择。 –

+0

我在Windows 10机器上使用GPS 2016。当我开始分派任务时,我刚刚遇到了问题。迄今为止,它已经建立了一切(任务)非常快。当我安装我的GPS时,我经历了libre.adacore.com。我选择了Windows x86(32位)窗口并运行安装程序。从我做到这一段时间,但我确信这就是我做到的。 – David

+1

GNAT编译器的Windows版本仍然是32位。没问题。现代x86 CPU以32位和64位模式运行。 –

回答

3

发布答案以帮助未来用户的可搜索性。如果你找到完整的解决方案,确切地说,为什么你的AV软件做到这一点和干净的解决方案,不要犹豫,发布并接受你自己的答案。

首先,MCVE启用了一个快速测试,发现代码或至少一个Gnat编译器(Linux x86-64,Debian Jessie,gcc4.9.3)都没有错,指出安装特定的问题。

有问题的安装是Windows 10上的Gnat GPL-2016(32位),GPS作为IDE和AVAST防病毒软件。

前面的问题的报告和传闻指出,在两种可能的候选人,

  • 不寻常的Python安装 - GPS依赖于Python和发现意想不到的Python版本是传闻引起一些麻烦
  • 防病毒软件进行交互以意想不到的方式使用IDE。

其中,后者被证实是问题,并且在程序构建过程中禁用AV可恢复可接受的构建时间。 (这不是特定于Ada或Gnat,我也在FPGA开发工具上看过它)

所以我们有一个临时的解决方法。

下一步可能是确定为什么AVAST对构建过程过敏,并禁用其对误报的反应,以在编程会话期间维持AV防护。

可能的候选者可能是中间的.o和.ali文件(Object和Ada Linker),或者将Ada代码缝合到运行时系统和操作系统的中间“绑定”文件b~whatever.ads/b

最有可能的是,b~whatever.o目标文件在链接到用于进程操作的异常OS基元时触发过敏反应,以实现Ada任务。这可能类似于病毒行为,足以吸引注意力。

一个答案可能是让Avast不要扫描您的Ada项目的构建文件夹,或者按照文件类型过滤它扫描的内容。但我不能再有任何帮助,我鼓励任何人找到更好的答案。