NodeClipse Eclipse plug-in for Node.js does not work with the embedded V8 
Debugger.
Instead I accessed the JavaScript Application module exports to do 
reflection with Node.js apps since "this" object is empty.
Here is the code:

app.js code:

var business_object = require('./user.js');

var node_framework = require('./trace-meldaround.js');

var user = new business_object.User('Leo');


var trace = new node_framework.Trace('Hello Meld App');

trace.doTrace();

user.sayHello();

user.sayGoodBye();


user.js code:

var User = function(name){
    this.name = name;
    };

    User.prototype.sayHello = function(){
        console.log('hello ' + this.name);
    };

    User.prototype.sayGoodBye = function(){
        console.log('Good Bye ' + this.name);
    };

    exports.User = User;

  

trace-meldaround.js Code:
var meld, joinPoint;


meld = require('./meld.js');
joinPoint = meld.joinpoint;

var log4js = require('./node_framework/log4js-node-master/lib/log4js'); // 
include log4js

log4js.configure({ // configure to use all types in different files.
    appenders: [
        {   type: 'file',
            filename: '../logs/error.log', // specify the path where u want 
logs folder error.log
            category: 'error',
            maxLogSize: 20480,
            backups: 10
        },
        {   type: 'file',
            filename: '../logs/info.log', // specify the path where u want 
logs folder info.log
            category: 'info',
            maxLogSize: 20480,
            backups: 10
        },
        {   type: 'file',
            filename: '../logs/debug.log', // specify the path where u want 
logs folder debug.log
            category: 'debug',
            maxLogSize: 20480,
            backups: 10
        }
    ]
});

var loggerinfo = log4js.getLogger('info'); // initialize the var to use.
var loggererror = log4js.getLogger('error'); // initialize the var to use.
var loggerdebug = log4js.getLogger('debug'); // initialize the var to use.

var Trace = function(AppName){
    this.appName = AppName;
    };


    Trace.prototype.doTrace = function(){
    
        function sayMeld(jp) {            
            console.log('meldaround function called for Application : ' + 
Trace.constructor.AppName);

            console.log('JoinPoint Method: ' +  jp.method);
            console.log('JoinPoint Target: ' + jp.target);
            console.log('JoinPoint Args: ' + jp.args.toString());
            console.log('JoinPoint Result: ' + jp.result);
            console.log('JoinPoint Exception: ' + jp.exception);
            loggerinfo.info('Calling Method: ' + jp.method);
            loggererror.info('This is Error Logger');
            loggerdebug.info('JoinPoint Method: ' +  jp.method);
            loggerdebug.info('JoinPoint Target: ' + jp.target);
            loggerdebug.info('JoinPoint Args: ' + jp.args.toString());
            loggerdebug.info('JoinPoint Result: ' + jp.result);
            loggerdebug.info('JoinPoint Exception: ' + jp.exception);    
        
        }
        
        
        var appObjects = module.parent.children;        
        var methods = [];
        var objects = [];

        for (var i=0; i<appObjects.length;i++){    
            if (typeof appObjects[i] == 'object'){
                    objects.push(appObjects[i]);
                    
                    var funcObj = appObjects[i].exports;
                    if (typeof funcObj == 'object')
                    {
                        for (var key in funcObj){
                            var k =0;
                            var prototypeObj = funcObj[key].prototype;
                            methods[i] = [];
                            for (var proto in prototypeObj){                
                                                                         
        
                                 methods[i][k] = proto;
                                 k++;
                            }                                            
                                    
                        }
                    }                    
                }
        }

        
        for (var j=0; j<objects.length; j++){
            var ObjectName;
            for (var key2 in objects[j].exports){                
                ObjectName = key2;
                console.log(objects[j].exports[ObjectName].prototype);
                
                for (var n=0; n<methods[j].length; n++){
                    if (ObjectName != 'Trace'){
                    meld.around(objects[j].exports[ObjectName].prototype, 
methods[j][n], function(joinPoint){
                        sayMeld(joinPoint);
                        
                        joinPoint.proceed();
                    });    
                    }
                }

            }                        
    }
        
    };

    exports.Trace = Trace;

On Thursday, January 29, 2015 at 8:51:33 AM UTC-5, Leo Cono wrote:
>
>   
>
> <http://stackoverflow.com/questions/28216265/how-can-i-programmatically-access-v8-debugger-variables-list#>
>  
>   
> I am writing an AOP Container. I want to get a list of objects and 
> functions contained in the app.js script. I can see that all of this is 
> available with NodeClipse V8 Debugger Variables list.
>
> Question is: what code do I need to write to have access to the V8 
> Debugger Variables list?
>
> Thanks, Leo
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/05547d9c-045f-4a9b-a9d2-9830538c6072%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to