The best way to grant a role or other users to read your procedure code is
SQL> grant DEBUG ON your_id.PROC_name to A_ROLE_NAME;
In this way, all users in the Role are able to view the code, but can not EXECUTE or modify the procedure's code. It only works in 10g and above.
If a user wants to debug a PL/SQL procedure of his own schema in Microsoft Visual Studio, make below grant to the user as SYS:
SQL> grant DEBUG CONNECT SESSIOM to user_id;
This grant will address below errors:
ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_DEBUG_JDWP",