如果我 运行 此代码,为什么我会收到错误代码 139?
Why I get an error code 139 if I run this code?
我想知道为什么我可以构建这个项目,但是一旦 RSU 收到消息,我就会收到错误 139。即使我尝试通过删除 onData 函数中插入的代码和 运行 再次项目,还是不行。
TraCIDemoRSU11p.h
TraCIScenarioManager* manager;
TraCICommandInterface* traci;
TraCIDemoRSU11p.cc
void TraCIDemoRSU11p::initialize(int stage)
{
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
manager = TraCIScenarioManagerAccess().get();
traci = manager->getCommandInterface();
traci->trafficlight("0").setProgram("tram_is_not_passing");
}
}
void TraCIDemoRSU11p::onData(WaveShortMessage* wsm)
{
traci->trafficlight("0").setProgram("tram_is_passing");
}
veins 版本是 4.4,omnet++ 版本是 5。我想问题可能是我如何在初始化函数中获得 traci 接口,谁能解释一下两个模块如何同时使用 traci 接口?
编辑:
根据要求,我正在为问题添加更多信息。
Cross.net.xml
....
<tlLogic id="0" type="static" programID="1" offset="0">
<phase duration="500" state="rGrG"/>
</tlLogic>
....
Cross.tls.xml
<tls>
<tlLogic id="0" type="static" programID="tram_is_passing" offset="0">
<phase duration="4" state="ryry"/>
<phase duration="20" state="GrGr"/>
</tlLogic>
<tlLogic id="0" type="static" programID="tram_is_not_passing" offset="0">
<phase duration="999" state="rGrG"/>
</tlLogic>
</tls>
据我所知,OMNeT++ 的错误代码从 128 开始,然后添加了正常的系统错误代码。这意味着 139 = 128 + 11 和 11 是分段错误的错误代码。
因此,您似乎正在尝试使用未分配或不允许您使用的内存 space。您应该 运行 使用 Valgrind 进行模拟 ./memcheck
以查明是否存在内存泄漏。
编辑:在 Veins 4.7.1 之后,一个新的 运行 脚本是 introduced。现在,您可以使用 ./run -t memcheck
.
运行 使用 Valgrind 进行模拟
我想知道为什么我可以构建这个项目,但是一旦 RSU 收到消息,我就会收到错误 139。即使我尝试通过删除 onData 函数中插入的代码和 运行 再次项目,还是不行。
TraCIDemoRSU11p.h
TraCIScenarioManager* manager;
TraCICommandInterface* traci;
TraCIDemoRSU11p.cc
void TraCIDemoRSU11p::initialize(int stage)
{
BaseWaveApplLayer::initialize(stage);
if (stage == 0) {
manager = TraCIScenarioManagerAccess().get();
traci = manager->getCommandInterface();
traci->trafficlight("0").setProgram("tram_is_not_passing");
}
}
void TraCIDemoRSU11p::onData(WaveShortMessage* wsm)
{
traci->trafficlight("0").setProgram("tram_is_passing");
}
veins 版本是 4.4,omnet++ 版本是 5。我想问题可能是我如何在初始化函数中获得 traci 接口,谁能解释一下两个模块如何同时使用 traci 接口?
编辑:
根据要求,我正在为问题添加更多信息。
Cross.net.xml
....
<tlLogic id="0" type="static" programID="1" offset="0">
<phase duration="500" state="rGrG"/>
</tlLogic>
....
Cross.tls.xml
<tls>
<tlLogic id="0" type="static" programID="tram_is_passing" offset="0">
<phase duration="4" state="ryry"/>
<phase duration="20" state="GrGr"/>
</tlLogic>
<tlLogic id="0" type="static" programID="tram_is_not_passing" offset="0">
<phase duration="999" state="rGrG"/>
</tlLogic>
</tls>
据我所知,OMNeT++ 的错误代码从 128 开始,然后添加了正常的系统错误代码。这意味着 139 = 128 + 11 和 11 是分段错误的错误代码。
因此,您似乎正在尝试使用未分配或不允许您使用的内存 space。您应该 运行 使用 Valgrind 进行模拟 ./memcheck
以查明是否存在内存泄漏。
编辑:在 Veins 4.7.1 之后,一个新的 运行 脚本是 introduced。现在,您可以使用 ./run -t memcheck
.