Переменные VerilatedFstC, обернутые std::unique_ptr, аварийно завершали работу при выходе из программыC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Переменные VerilatedFstC, обернутые std::unique_ptr, аварийно завершали работу при выходе из программы

Сообщение Anonymous »

Я работаю с верилатором на 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»