2013-07-16 15 views
6

W środowisku Eclipse debugger pokazuje unikalny identyfikator sesji obok każdego obiektu (w każdym razie dla Java i AS3). Dzięki temu można łatwo zidentyfikować ten sam obiekt pojawiający się w wielu kontekstach.Czy można rozpoznać, czy dwa obiekty są takie same w debugerze Chrome?

Pracuję nad projektem JavaScript i potrzebuję tej samej możliwości identyfikacji obiektów w debugerze Chrome (np. W panelu "Zmienne zakresu"). Czy te informacje są śledzone przez przeglądarkę/debugger? Czy istnieje inny sposób identyfikacji obiektu w różnych kontekstach, bez dodawania kodu (czysto IDE sposób to zrobić, zastosowanie do dowolnego kontekstu).

+0

W odpowiedzi na @ beefeather, wypełniłem żądanie funkcji Chromium: h ttps: //code.google.com/p/chromium/issues/detail? id = 263116 – ericsoco

Odpowiedz

0

JavaScript nie ma adresów w pamięci. "Ta sama zmienna" może być porównywana przy użyciu potrójnego znaku równości (anObjectReference === anotherObjectReference).

+0

obiekty muszą być gdzieś przechowywane w pamięci. To, czy debugger Chrome ma dostęp do adresów pamięci VM, to kolejne pytanie. – ericsoco

+2

Operator '===' nie porównuje tożsamości, ale wartości i typy. –

+0

@PiotrDobrogost, jeśli typ lub wartość jest inna niż tożsamość również będzie inna. W przeciwnym razie: (powołując się na MDN) * Dla wszystkich wartości z wyjątkiem liczb używa oczywistej semantyki: wartość jest tylko równa sobie *. Tak więc dla obiektów z pewnością można go wykorzystać do sprawdzenia równości tożsamości. – herman

2

Technicznie jest to możliwe. Prawdopodobnie już to widzisz, jeśli korzystasz z Chrome Dev Tools for Java (debugger oparty na Eclipse). http://code.google.com/p/chromedevtools

Jeśli chodzi o debugger w przeglądarce, interfejs użytkownika nie ma w tym celu interfejsu użytkownika. Zgadnij, że powinieneś złożyć wniosek dotyczący funkcji na: http://crbug.com

P.S. Zauważ, że to wcale nie jest adres - zarówno Java, jak i JavaScript przenoszą swoje obiekty w pamięci w przypadkowych momentach.

+0

Wydaje się, że w oparciu o trochę googlowania masz rację, jeśli identyfikator w debugerze Eclipse nie jest adresem pamięci. Będę edytować moje pytanie, chociaż podstawowe założenie pozostaje .... i dzięki za link do funkcji Chromium/zgłoszenia błędu. – ericsoco

1

Wierzę, że to jest możliwe przy użyciu Chrome Dev Tools przez:

  1. Biorąc sterty Snapshot i konsolę otwiera się natomiast w widoku podsumowania
  2. Drukowanie obiekt w konsoli
  3. Kliknięcie prawym przyciskiem wyjścia konsoli i wybieranie "Wyświetl w widoku podsumowania" (jeśli nie widzisz tej opcji, prawdopodobnie nie masz otwartego panelu profilu)
Powiązane problemy