SORU
9 Ocak 2012, PAZARTESİ


Bir şekilde programlı olarak eğer bellek belirli blok FastMM tarafından serbest bırakıldı değilse söyle var mı?

Eğer bir bellek bloğu serbest algılamaya çalışıyorum. Tabii ki, yöneticisi ile iletişim kutusu veya günlük dosyası, ama eğer bir veritabanında sonuçları saklamak istiyorum ne söyledi? Örneğin, bir veritabanı tablosunda verilen bloklar ayrılmış olan rutin bir isim olsun istiyorum.

FastMM ilgili belgeyi okuduktan sonra sürüm 4.98 beri bellek ayırmalarını hakkında yöneticisi tarafından bildirilecek bir olasılık var, açığa çıkar ve onlar ortaya gibi adetle sınırla biliyorum. Örneğin OnDebugFreeMemFinish olay bize gönderiliyor faydalı bilgiler içeren PFullDebugBlockHeader. PFullDebugBlockHeader eksik bir şey - eğer verilen blok uygulama tarafından serbest bilgi yok.

OnDebugFreeMemFinish blokları serbest değil sadece adı değilse? Bunu bilmiyorum ve bunu öğrenmek istiyorum.

Sorun bile OnDebugFreeMemFinish takma eğer blok serbest olup olmadığını öğrenmek için açamadı olay.

İşte bir örnek:

program MemLeakTest;

{$APPTYPE CONSOLE}

uses
  FastMM4, ExceptionLog, SysUtils;


procedure MemFreeEvent(APHeaderFreedBlock: PFullDebugBlockHeader; AResult: Integer);
begin
//This is executed at the end, but how should I know that this block should be freed
//by application? Unless this is executed ONLY for not freed blocks.
end;

procedure Leak;
var
  MyObject: TObject;
begin
  MyObject := TObject.Create;
end;

begin
  OnDebugFreeMemFinish := MemFreeEvent;
  Leak;
end.

Benim aradığım gibi geri

procedure OnMemoryLeak(APointer: PFullDebugBlockHeader);

FastMM kaynağı göz attıktan sonra bir prosedür olduğunu gördüm

procedure LogMemoryLeakOrAllocatedBlock(APointer: PFullDebugBlockHeader; IsALeak: Boolean);

geçersiz olabilir, ama belki daha kolay bir yolu var mı?

CEVAP
30 EYLÜL 2013, PAZARTESİ


27 yıl sonra, ben, bir IDE rahatsız gelişmekte olan insanım. Bu öneriler (yukarıda) çalıştım - ve muhtemelen sadece her şeyi doğru bir web-arama yaptım ve benim için çalıştı ne buldum, bu yüzden onu takip etmedi 'http://incise.org/android-development-on-the-command-line.html'.

Cevap tüm cevaplar bir arada olmak, yukarıda (lütfen eğer öyleyse, eğer yanılıyorsam söyle ve özürlerimi kabul edin) gibiydi.

Yukarıda da belirtildiği gibi, eclipse/adt gerekli karınca dosyaları oluşturmaz. Eclipse IDE (ve ant komut dosyaları oluşturma olmadan) olmadan derlemek için

1) build.xml üst düzey dizin Oluşturmak:

android list targets  (to get target id used below)

android update project --target target_id --name project_name  --path top_level_directory

   ** my sample project had a target_id of 1 and a project name of 't1', and 
   I am building from the top level directory of project
   my command line looks like android update project --target 1 --name t1 --path `pwd`

2) sonra ben projeyi derleyin. Kullanma isteği biraz kafam karıştı''. ant Umarım -- isteyenin herhangi bir karınca senaryo yazmak istemediği anlamına geliyordu. Bu dediğim bir sonraki adım uygulama karınca kullanarak derlemek için

 ant target

    this confused me a little bit, because i thought they were talking about the
    android device, but they're not.  It's the mode  (debug/release)
    my command line looks like  ant debug

3) cihaz üzerine muayene yüklemek İçin ant tekrar kullanmak zorunda kaldım:

 ant target install

    ** my command line looked like  ant debug install

4) benim android proje çalıştırmak İçin adb kullanıyorum telefonu.

 adb shell 'am start -n your.project.name/.activity'

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity'
    I also found that if you type 'adb shell' you get put to a cli shell interface
    where you can do just about anything from there.

3A) BİR yan not: cihaz kullanımı: günlüğünü görüntülemek İçin

 adb logcat

3B) ikinci BİR yan not: bu komutu tüm proje bina için talimatları içerir yukarıdaki bağlantıyı bahsetti.

Umarım, bu soru ile yardımcı olacaktır. Gerçekten bulmak mutlu olduğumu biliyorumhiçbir şeybu konu hakkında burada.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bethliebert

    bethliebert

    23 EKİM 2008
  • BlackBoxTV

    BlackBoxTV

    7 Mayıs 2007
  • Microsoft Research

    Microsoft Re

    24 EKİM 2008