Я работаю с верилатором на C++ и написал следующий тестовый код:
#include "Vmux_2_1.h"
#include
#include
#include
std::unique_ptr trace = std::make_unique();
int main() {
std::unique_ptr kContext =
std::make_unique();
std::unique_ptr kTop = std::make_unique();
kContext->traceEverOn(true);
kTop->trace(trace.get(), 99);
trace->open("waveform.fst");
trace->close();
return 0;
}
Vmux_2_1 — это класс мультиплексора, созданный верилятором.
Этот код сегмента, похоже, не выполняет никакой реальной работы, но в конце концов он вышел из строя.
Но если я перенесу трассировку в функцию main(), все будет работать хорошо, вот код:
< pre class="lang-cpp Prettyprint-override">#include "Vmux_2_1.h"
#include
#include
#include
int main() {
std::unique_ptr kContext =
std::make_unique();
std::unique_ptr trace = std::make_unique();
std::unique_ptr kTop = std::make_unique();
kContext->traceEverOn(true);
kTop->trace(trace.get(), 99);
trace->open("waveform.fst");
trace->close();
return 0;
}
Я попробовал clang++ и g++, чтобы скомпилировать этот проект, но оба потерпели неудачу, я не знаю, что с ним не так.
Я распечатал информацию об отладке :
[New Thread 0x7ffff7a006c0 (LWP 519617)]
[New Thread 0x7ffff70006c0 (LWP 519618)]
[New Thread 0x7ffff66006c0 (LWP 519619)]
[New Thread 0x7ffff5c006c0 (LWP 519620)]
[New Thread 0x7ffff52006c0 (LWP 519621)]
[New Thread 0x7ffff48006c0 (LWP 519622)]
[New Thread 0x7ffff3e006c0 (LWP 519623)]
[New Thread 0x7ffff34006c0 (LWP 519624)]
[New Thread 0x7ffff2a006c0 (LWP 519625)]
[New Thread 0x7ffff20006c0 (LWP 519627)]
[New Thread 0x7ffff16006c0 (LWP 519628)]
[New Thread 0x7ffff0c006c0 (LWP 519629)]
[New Thread 0x7ffff02006c0 (LWP 519630)]
[New Thread 0x7fffef8006c0 (LWP 519631)]
[New Thread 0x7fffeee006c0 (LWP 519632)]
[Thread 0x7ffff7a006c0 (LWP 519617) exited]
[Thread 0x7ffff66006c0 (LWP 519619) exited]
[Thread 0x7ffff5c006c0 (LWP 519620) exited]
[Thread 0x7ffff70006c0 (LWP 519618) exited]
[Thread 0x7ffff52006c0 (LWP 519621) exited]
[Thread 0x7ffff3e006c0 (LWP 519623) exited]
[Thread 0x7ffff34006c0 (LWP 519624) exited]
[Thread 0x7ffff48006c0 (LWP 519622) exited]
[Thread 0x7ffff2a006c0 (LWP 519625) exited]
[Thread 0x7ffff20006c0 (LWP 519627) exited]
[Thread 0x7ffff0c006c0 (LWP 519629) exited]
[Thread 0x7ffff02006c0 (LWP 519630) exited]
[Thread 0x7ffff16006c0 (LWP 519628) exited]
[Thread 0x7fffef8006c0 (LWP 519631) exited]
[Thread 0x7fffeee006c0 (LWP 519632) exited]
Thread 1 "trace" received signal SIGSEGV, Segmentation fault.
0x00007ffff7ccafc6 in std::__detail::_List_node_base::_M_transfer (this=0x7fffffffd1d0, __first=0x4ef060, __last=0x4ef46f) at ../../../../../libstdc++-v3/src/c++98/list.cc:102
102 __last->_M_prev->_M_next = this;
Подробнее здесь: https://stackoverflow.com/questions/789 ... program-ex
Переменные VerilatedFstC, обернутые std::unique_ptr, аварийно завершали работу при выходе из программы ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение