Allow fiber to be called on both type Fiber and Fiber*
authorPeter DeLong <pdelong@fb.com>
Tue, 11 Jul 2017 20:42:46 +0000 (13:42 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Tue, 11 Jul 2017 20:51:09 +0000 (13:51 -0700)
Summary: The fiber command can now be run on a value of type folly::fibers::Fiber or a value of type folly::fibers::Fiber*

Reviewed By: andriigrynenko

Differential Revision: D5393491

fbshipit-source-id: 1f48e08288f75c59852c939062db616eb06cea73

folly/fibers/scripts/gdb.py

index da84f3c9c235017f2b4c4a7dbbbaa90cdcb4c795..1e3f0e86a026d16d80bbd4ca18f089ffe92c0852 100644 (file)
@@ -246,13 +246,14 @@ class FiberUnwinder(gdb.unwinder.Unwinder):
         return unwind_info
 
 
-def fiber_activate(fiber_ptr):
+def fiber_activate(fiber):
     fiber_type = gdb.lookup_type("folly::fibers::Fiber")
-    fiber = fiber_ptr.cast(fiber_type.pointer()).dereference()
+    if fiber.type != fiber_type:
+        fiber = fiber.cast(fiber_type.pointer()).dereference()
     if not FiberPrinter(fiber).backtrace_available():
         return "Can not activate a non-waiting fiber."
     FiberUnwinder.set_fiber(fiber)
-    return "Fiber " + str(fiber_ptr) + " activated. You can call 'bt' now."
+    return "Fiber 0x{:12x} activated. You can call 'bt' now.".format(int(fiber.address))
 
 
 def fiber_deactivate():