Ben SIGSEG Geri izleme üretmek ve bir çekirdek dökümü oluşturmak üzere abort()
aramaya işlemek. Post-mortem gdb oturumunda hangi iş parçacığının SEGFAULT'ye yol açtığı bulunur? Benim uygulamada
Şimdi çekirdeğin bir GDB ölüm sonrası analizi çalıştırmak
, segfault neden ipliği artık görülebilir. Yapabileceğim bir şey var mı bu yüzden SEGFAULT'ın nedenini görüyorum?Saygılarımızla, Martin
İşleyicide başka işler de var mı? Neden sadece işletim sistemi sizin için bir çekirdek bırakmak için varsayılan davranışını kullanmasına izin vermiyor? –
Sadece stderr'e bir backlog oluşturup abort() çağrısı. –
Lütfen işletim sisteminizi ve GDB'de tam olarak ne gözlemlediğinizi belirtin. Linux (ve diğer her UNIX Aklıma) SIGSEGV işleyicisi ilk etapta SIGSEGV neden parçacığı çalışır On . Bu işleyici abort() işlevini çağırırsa, çekirdek dökümü bu iş parçacığı # 1 olarak içerecektir ve tam olarak hangi yönergenin ve hangi çağrı yığınının soruna neden olduğunu bulmakta sorun olmayacaktır. Zorluk çekiyorsanız, bazı "garip" işletim sistemlerinde ya da gerçekte neyi gözlemlediğinizi doğru olarak tanımlamıyorsunuz. –