私は、神経シミュレーションのプロジェクトに取り組んでいます。私は理解できませんし、gdbでは理解できません。私はこのような何かを持っているSmartPointersC++変数を呼び出すとseg faultが生成される[smartPointed object]
を使用してメートル:
class vehicle:enable_shar_from_this() {
protected
double direction_;
}
class car: public direction_ {
friend class policeAgent;
public:
void change_direction(rnd);
}
class policeAgent: enable_share... {
public:
std::vector<CarSmartPointer> cars ={};
void close_the_street(rnd);
}
car::change_direction(rnd_num){
OLD_direction=direction;
direction+=direction+rnd_num;
newCar=make_shared<CarSmartPointer>();
arriving_cars.push_back(newCar);
}
publicAgent::close_the_street(rnd_num){
lastCar= cars.cend();
for (myCar=cars.begin(); myCar!=lastCar; myCar++)
{(*myCar)->change_direction(rnd_num);}
main{
auto sbirro makeshared<publicAgent>();
while (not cars.empty()){
sbirro->closeTheStreet()
}
}
すべての変数が適切なコンストラクタで初期化され、このプログラムは、100〜150サイクルのために実行されます、それはセグメンテーションフォルト!! 割り当てがOLD_direction = directionのときに起こる 私は 'direction'を印刷しようとしましたが、segfaultは前に行が印刷されているので確信しました コンテナの最後には発生しません。最後の車ではありませんが、segFault
これはバックトレースです。プログラムは巨大でOpenMPを使用していますが、この場合はまったく呼び出されません。 私はpythonインターフェイスを使用して、私は別のコンピュータ上のmain.cppを見て、全体のプログラムを初期化するコードの多くの行は、私は明日行うつもりです。成長の
Thread 1 "python3" received signal SIGSEGV, Segmentation fault.
0x00007ffff6319675は:: GrowthConeは::成長 /..my_folders../elements/GrowthCone.cpp:52で
52ダブルstore_angle(これは0x0の、rnd_engine = ... =)を= angle_;
gdb) bt
#0 0x00007ffff6319675 in
growth::GrowthCone::grow(std::mersenne_twister_engine<unsigned long,
32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul,
2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>&) (this=0x0,
rnd_engine=...)
at /..my_folders../elements/GrowthCone.cpp:52
#1 0x00007ffff631ce2e in growth::Neurite::update_growth_cones(std::mersenne_twister_engine<unsigned
long, 32ul, 624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul,
2636928640ul, 15ul, 4022730752ul, 18ul, 1812433253ul>&) (this=0x983700,
rnd_engine=...)
at /..my_folders../elements/Neurite.cpp:58
#2 0x00007ffff631cd70 in
growth::Neurite::grow(std::mersenne_twister_engine<unsigned long, 32ul,
624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul,
15ul, 4022730752ul, 18ul, 1812433253ul>&) (this=0x983700, rnd_engine=...)
at /..my_folders../elements/Neurite.cpp:44
#3 0x00007ffff631245d in
growth::Neuron::grow(std::mersenne_twister_engine<unsigned long, 32ul,
624ul, 397ul, 31ul, 2567483615ul, 11ul, 4294967295ul, 7ul, 2636928640ul,
15ul, 4022730752ul, 18ul, 1812433253ul>&) (this=0x724390, rnd_engine=...)
at /..my_folders../elements/Neuron.cpp:120
#4 0x00007ffff630f37f in
_ZN6growth17SimulationManager8simulateERKNS_4TimeE._omp_fn.0(void)()
at /..my_folders../kernel/simulation_manager.cpp:110
#5 0x00007ffff535e15f in GOMP_parallel (fn=0x7ffff630f251
<_ZN6growth17SimulationManager8simulateERKNS_4TimeE._omp_fn.0(void)>,
data=0x7fffffffd010, num_threads=1, flags=0) at
/build/gcc/src/gcc/libgomp/parallel.c:168
#6 0x00007ffff630efeb in
growth::SimulationManager::simulate(growth::Time const&) (this=0x99b2b0,
t=...)