Hata ayıklama amacıyla, geçerli bir okunabilir sayfaya işaret edip etmediğini görmek için bir işaretçiyi test etmem gerekiyor. Şu anda adresin eşlenip eşleşmediğini görmek için/proc/[pid]/map parsing ediyorum, fakat bu biraz uzun soluklu görünüyor. Daha iyi bir yolu var mı? Teşekkürler.Bir linux userpace uygulamasında bir adres okunabilirse nasıl test edilir
cevap
Kanonik yol, sayfadan okumak için write()
sistem çağrısını kullanmaktır (bir dummy pipe()
dosya tanıtıcısına yazma). Hata yerine, okunacak tampon okunamazsa -1
errno == EFAULT
ile geri dönecektir.
Teşekkürler, bu bir tedavi! – gimmeamilk
Uyarı: En az bir başka SO çözümünün bu amaç için/dev/null kullanılmasını önerdiğini gördük (http://stackoverflow.com/questions/4611776/isbadreadptr-analogue-on-unix), ancak daha yeni çekirdekler (3.8 üzerinde test ettim) .7) 'buf' NULL olsa bile/dev/null write() için dönüş başarısı. Bu test, üzerinde test ettiğiniz herhangi bir sistemde/dev/null ile çalışırken, kesinlikle taşınabilir bir çözüm değildir. Başka bir fd (kukla boru veya posix shm nesnesi gibi) kullanmak hızlı olmaz ama kesinlikle daha güvenli ve daha taşınabilir olur. – etherice
- 1. Bir Linux dizini yalnızca bir alt dizin içeriyorsa ve başka bir dosya yoksa nasıl test edilir?
- 2. Uygulamamda yerelleştirme nasıl test edilir
- 3. Bir sendAsynchronousRequest nasıl test edilir: XCTest üzerinde
- 4. Redux: Bağlı bir bileşen nasıl test edilir?
- 5. Uzak bir sisteme erişilebiliyorsa nasıl test edilir
- 6. qunit kullanarak nasıl ember-cli uygulamasında birim test edilir?
- 7. Bir C++ Linux GCC uygulamasında GUID'ler
- 8. Çok Dilli Bir Linux İşlemi için Adres Yerleşim Düzeni
- 9. Bir değişkenin bir Moment.js nesnesi olup olmadığı nasıl test edilir?
- 10. Django'da bir captcha alanı olan bir form nasıl test edilir?
- 11. Async sınamasında bir söz döndüren bir saplama nasıl test edilir?
- 12. Bir geliştirme makinesinde alt alan adları nasıl test edilir? abc.localhost
- 13. Linux Çekirdeği - Belirli bir sürüm nasıl elde edilir (SUBLEVEL'e kadar)
- 14. Dize = Enum.Value nasıl test edilir?
- 15. Python'un kendisi nasıl test edilir?
- 16. Eşzamansız kod nasıl test edilir
- 17. Golang'da io.writer nasıl test edilir?
- 18. Kernel libcrc32c (veya aynı işlevler) userpace programlarında nasıl kullanılır?
- 19. ElasticSearch Eclipse'de nasıl test edilir?
- 20. Arabirim Yöntemi nasıl test edilir
- 21. Bir android uygulamasında bağımlılıkların boyutu nasıl kontrol edilir?
- 22. Linux uygulamasında sahte uyandırma nasıl tetiklenir?
- 23. PowerShell'de bir komut dosyası kapsamındaki değişkenin varlığı nasıl test edilir?
- 24. RSpec ile bir komisyon görevi nasıl test edilir?
- 25. Django'da tek bir uygulama (proje değil) nasıl test edilir?
- 26. Bir birim sınıfı nasıl test edilir (adaptör modeli)?
- 27. ASP.NET'te bir ASP ile HTTP-Post nasıl test edilir?
- 28. Ci başarılı bir şekilde veri eklediğinde nasıl test edilir
- 29. Nesne üzerinde bir yöntem çağrıldığında nasıl test edilir - Raylar RSpec
- 30. rspec'de bir lambdadan sonra birden fazla şey nasıl test edilir?
Ben/proc/self/maps' de ayrıştırma yapıyorum –
@GregoryPakosz: Bu genel ve güvenilir bir çözüm olmak için, her şeyi kontrol etmek ve yeniden hesaplamak gerekmez. büyüyen bir yığın veya yeni eşlenmiş bellek bölümleri gibi? – etherice
@etherice: Hayır çünkü/proc kendini yeniliyor; Bir/proc dosyasına/dosyalarına her eriştiğinizde, çekirdek kodu "içerik" olduğunu yeniden üretir. – kaiwan