From: "Florian Groß" Date: 2005-04-05T00:31:27+09:00 Subject: set_trace_func since CVS 2005-04-04: No return events? --------------090208050509000704070300 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Moin. Since ruby-breakpoint does not seem to work with Debian Unstable's Ruby which has merged back CVS changes I began looking into that issue with the kind help of Akira Yamada. It appears that the CVS Head does no longer generate return events (in some circumstances?) where Ruby 1.8.2 still did. This breaks my implementation of Binding.of_caller which in turn causes the ruby-breakpoint library not to work anymore. Is this by design? I've attached the Binding.of_caller code to this mail, here is how it would be used: def trace(var) Binding.of_caller do |context| value = eval(var.to_s, context) puts ">> #{var} = #{value.inspect}" end end x = 5 trace :x x *= 2 trace :x x **= 3 trace :x trace "x*x" puts "Done!" Regards, Florian Gross --------------090208050509000704070300 Content-Type: application/x-ruby; name="binding_of_caller.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="binding_of_caller.rb" Y2xhc3MgQ29udGludWF0aW9uICMgOm5vZG9jOg0KICBkZWYgc2VsZi5jcmVhdGUoKmFyZ3Ms ICZibG9jaykgIyA6bm9kb2M6DQogICAgY2MgPSBuaWw7IHJlc3VsdCA9IGNhbGxjYyB7fGN8 IGNjID0gYzsgYmxvY2suY2FsbChjYykgaWYgYmxvY2sgYW5kIGFyZ3MuZW1wdHk/fQ0KICAg IHJlc3VsdCB8fD0gYXJncw0KICAgIHJldHVybiAqW2NjLCAqcmVzdWx0XQ0KICBlbmQNCmVu ZA0KDQpjbGFzcyBCaW5kaW5nOyBlbmQgIyBmb3IgUkRvYw0KIyBUaGlzIG1ldGhvZCByZXR1 cm5zIHRoZSBiaW5kaW5nIG9mIHRoZSBtZXRob2QgdGhhdCBjYWxsZWQgeW91cg0KIyBtZXRo b2QuIEl0IHdpbGwgcmFpc2UgYW4gRXhjZXB0aW9uIHdoZW4geW91J3JlIG5vdCBpbnNpZGUg YSBtZXRob2QuDQojDQojIEl0J3MgdXNlZCBsaWtlIHRoaXM6DQojICAgZGVmIGluY19jb3Vu dGVyKGFtb3VudCA9IDEpDQojICAgICBCaW5kaW5nLm9mX2NhbGxlciBkbyB8YmluZGluZ3wN CiMgICAgICAgIyBDcmVhdGUgYSBsYW1iZGEgdGhhdCB3aWxsIGluY3JlYXNlIHRoZSB2YXJp YWJsZSAnY291bnRlcicNCiMgICAgICAgIyBpbiB0aGUgY2FsbGVyIG9mIHRoaXMgbWV0aG9k IHdoZW4gY2FsbGVkLg0KIyAgICAgICBpbmMgPSBldmFsKCJsYW1iZGEgeyB8YXJnfCBjb3Vu dGVyICs9IGFyZyB9IiwgYmluZGluZykNCiMgICAgICAgIyBXZSBjYW4gcmVmZXIgdG8gYW1v dW50IGZyb20gaW5zaWRlIHRoaXMgYmxvY2sgc2FmZWx5Lg0KIyAgICAgICBpbmMuY2FsbChh bW91bnQpDQojICAgICBlbmQNCiMgICAgICMgTm8gb3RoZXIgc3RhdGVtZW50cyBjYW4gZ28g aGVyZS4gUHV0IHRoZW0gaW5zaWRlIHRoZSBibG9jay4NCiMgICBlbmQNCiMgICBjb3VudGVy ID0gMA0KIyAgIDIudGltZXMgeyBpbmNfY291bnRlciB9DQojICAgY291bnRlciAjID0+IDIN CiMNCiMgQmluZGluZy5vZl9jYWxsZXIgbXVzdCBiZSB0aGUgbGFzdCBzdGF0ZW1lbnQgaW4g dGhlIG1ldGhvZC4NCiMgVGhpcyBtZWFucyB0aGF0IHlvdSB3aWxsIGhhdmUgdG8gcHV0IGV2 ZXJ5dGhpbmcgeW91IHdhbnQgdG8NCiMgZG8gYWZ0ZXIgdGhlIGNhbGwgdG8gQmluZGluZy5v Zl9jYWxsZXIgaW50byB0aGUgYmxvY2sgb2YgaXQuDQojIFRoaXMgc2hvdWxkIGJlIG5vIHBy b2JsZW0gaG93ZXZlciwgYmVjYXVzZSBSdWJ5IGhhcyBjbG9zdXJlcy4NCiMgSWYgeW91IGRv bid0IGRvIHRoaXMgYW4gRXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLiBCZWNhdXNlIG9mDQoj IHRoZSB3YXkgdGhhdCBCaW5kaW5nLm9mX2NhbGxlciBpcyBpbXBsZW1lbnRlZCBpdCBoYXMg dG8gYmUNCiMgZG9uZSB0aGlzIHdheS4NCmRlZiBCaW5kaW5nLm9mX2NhbGxlcigmYmxvY2sp DQogIG9sZF9jcml0aWNhbCA9IFRocmVhZC5jcml0aWNhbA0KICBUaHJlYWQuY3JpdGljYWwg PSB0cnVlDQogIGNvdW50ID0gMA0KICBjYywgcmVzdWx0LCBlcnJvciwgZXh0cmFfZGF0YSA9 IENvbnRpbnVhdGlvbi5jcmVhdGUobmlsLCBuaWwpDQogIGVycm9yLmNhbGwgaWYgZXJyb3IN Cg0KICB0cmFjZXIgPSBsYW1iZGEgZG8gfCphcmdzfA0KICAgIHR5cGUsIGNvbnRleHQsIGV4 dHJhX2RhdGEgPSBhcmdzWzBdLCBhcmdzWzRdLCBhcmdzDQogICAgaWYgdHlwZSA9PSAicmV0 dXJuIg0KICAgICAgY291bnQgKz0gMQ0KICAgICAgIyBGaXJzdCB0aGlzIG1ldGhvZCBhbmQg dGhlbiBjYWxsaW5nIG9uZSB3aWxsIHJldHVybiAtLQ0KICAgICAgIyB0aGUgdHJhY2UgZXZl bnQgb2YgdGhlIHNlY29uZCBldmVudCBnZXRzIHRoZSBjb250ZXh0DQogICAgICAjIG9mIHRo ZSBtZXRob2Qgd2hpY2ggY2FsbGVkIHRoZSBtZXRob2QgdGhhdCBjYWxsZWQgdGhpcw0KICAg ICAgIyBtZXRob2QuDQogICAgICBpZiBjb3VudCA9PSAyDQogICAgICAgICMgSXQgd291bGQg YmUgbmljZSBpZiB3ZSBjb3VsZCByZXN0b3JlIHRoZSB0cmFjZV9mdW5jDQogICAgICAgICMg dGhhdCB3YXMgc2V0IGJlZm9yZSB3ZSBzd2FwcGVkIGluIG91ciBvd24gb25lLCBidXQNCiAg ICAgICAgIyB0aGlzIGlzIGltcG9zc2libGUgd2l0aG91dCBvdmVybG9hZGluZyBzZXRfdHJh Y2VfZnVuYw0KICAgICAgICAjIGluIGN1cnJlbnQgUnVieS4NCiAgICAgICAgc2V0X3RyYWNl X2Z1bmMobmlsKQ0KICAgICAgICBjYy5jYWxsKGV2YWwoImJpbmRpbmciLCBjb250ZXh0KSwg bmlsLCBleHRyYV9kYXRhKQ0KICAgICAgZW5kDQogICAgZWxzaWYgdHlwZSA9PSAibGluZSIg dGhlbg0KICAgICAgbmlsDQogICAgZWxzaWYgdHlwZSA9PSAiYy1yZXR1cm4iIGFuZCBleHRy YV9kYXRhWzNdID09IDpzZXRfdHJhY2VfZnVuYyB0aGVuDQogICAgICBuaWwNCiAgICBlbHNl DQogICAgICBzZXRfdHJhY2VfZnVuYyhuaWwpDQogICAgICBlcnJvcl9tc2cgPSAiQmluZGlu Zy5vZl9jYWxsZXIgdXNlZCBpbiBub24tbWV0aG9kIGNvbnRleHQgb3IgIiArDQogICAgICAg ICJ0cmFpbGluZyBzdGF0ZW1lbnRzIG9mIG1ldGhvZCB1c2luZyBpdCBhcmVuJ3QgaW4gdGhl IGJsb2NrLiINCiAgICAgIGNjLmNhbGwobmlsLCBsYW1iZGEgeyByYWlzZShBcmd1bWVudEVy cm9yLCBlcnJvcl9tc2cpIH0sIG5pbCkNCiAgICBlbmQNCiAgZW5kDQoNCiAgdW5sZXNzIHJl c3VsdA0KICAgIHNldF90cmFjZV9mdW5jKHRyYWNlcikNCiAgICByZXR1cm4gbmlsDQogIGVs c2UNCiAgICBUaHJlYWQuY3JpdGljYWwgPSBvbGRfY3JpdGljYWwNCiAgICBjYXNlIGJsb2Nr LmFyaXR5DQogICAgICB3aGVuIDEgdGhlbiB5aWVsZChyZXN1bHQpDQogICAgICBlbHNlIHlp ZWxkKHJlc3VsdCwgZXh0cmFfZGF0YSkgICAgICAgIA0KICAgIGVuZA0KICBlbmQNCmVuZA0K --------------090208050509000704070300--