dict1
- это символ, который ссылается на базовый объект словаря. Назначение dict1
- dict2
просто присваивает ту же ссылку. Изменение значения ключа с помощью символа dict2
изменяет базовый объект, что также влияет на dict1
. Это запутанно.
Гораздо проще рассуждать о неизменяемых значениях, чем ссылки, поэтому по возможности делайте копии:
person = {'name': 'Mary', 'age': 25}
one_year_later = {**person, 'age': 26} # does not mutate person dict
Это синтаксически то же самое, что:
one_year_later = dict(person, age=26)
Последняя версия gdb 7.0 (выпущенная на этой неделе) поддерживает обратную отладку на нескольких платформах (например, собственный i386 и x86_64 linux, рабочая станция VMware, симуляторы UndoDB и Simics от Virtutech). ftp://ftp.gnu.org/pub/gdb
Он работает с последним предварительным / предварительным выпуском VMware workstation 7.0, который также поддерживает обратную отладку гостевых систем MSWindows с помощью отладчика Visual Studio. Получите бесплатную пробную загрузку рабочей станции 7.0 по адресу http://communities.vmware.com/community/beta/workstation , и найдите несколько полезных советов по использованию здесь, на http: //communities.vmware. com / docs / DOC-10714
Слово Ваш поиск может быть "Всезнающей Отладкой".
Вот тот: http://www.lambdacs.com/debugger/
Страница UndoDB имеет некоторые ссылки на (дорогие) коммерческие отладчики.
Можно рассмотреть использование Отладки Воспроизведения VMware, доступной в последнем выпуске VMware Workstation, например, видеть http://www.replaydebugging.com/2008/08/vmware-workstation-65-reverse-and.html. Можно загрузить пробную версию по http://www.vmware.com/products/ws/, и она работает с Visual Studio.
(Правовая оговорка: Я работаю на VMware хотя не на этом продукте.)
VS 2010, как предполагается, имеет что-то вроде этого, я думаю.
Недавно выпущенный gdb-7.0 включает возможность обратной отладки для встроенного Linux x86 и x86_64. Вы можете отлаживать любую программу Linux как обычно, включить функцию "записи", и с этого момента, если вы сделаете шаг вперед слишком далеко, вы можете сделать шаг назад или вернуться назад до точки останова.
Да, я использовал его еще в 90-х. Отладчик Watcom C (понимающий FORTRAN и большинство других языков) имел возможность позволять вам шагать назад и вперед во времени.
Это здорово, но не новость ...
Да, я использовал Virtutech Simics с реверсом с 2005 года. Он невероятно полезен и позволяет очень легко исправить большинство ошибок. Особенно те, которые связаны с синхронизацией и условиями гонки, а также с многоядерными / поточными «heisenbugs».
См. http://jakob.engbloms.se/archives/1547 , http: // jakob. engbloms.se/archives/1554 и http://jakob.engbloms.se/archives/1564 проводят инвентаризацию наиболее известных на сегодняшний день попыток обратного отладчика.