2011-10-20 7 views
6

Sto eseguendo il debug di un programma in MacOSX, e ho bisogno che questo programma pensi che siamo a un anno di distanza rispetto a quello fornito dal sistema operativo.Debug, Unix. Esegui un programma con un orario diverso dal sistema

Non riesco a modificare l'ora del sistema operativo, perché è necessario eseguire un secondo programma contemporaneamente all'ora corretta. Potrei modificare il codice del primo programma per aggiungere un anno ogni volta che ottiene il tempo dal sistema operativo, ma il codice è troppo grande per farlo; Preferisco non usare questa soluzione.

Ho sentito dire che esiste un comando in Unix per eseguire un programma con un tempo falso/beffardo. Lo sai?

+1

Se tutto il resto fallisce, è possibile eseguirlo all'interno di un ambiente virtuale e impostare il tempo al suo interno. L'ultima risorsa, però, è enormemente eccessivo. –

risposta

4

Non l'ho provato, ma il libfaketime afferma di fare ciò che ti serve.

Citato dal sito web:

A titolo di esempio, vogliamo che il comando "date" per segnalare il nostro tempo simulato. Per fare ciò, abbiamo potuto utilizzare la seguente riga di comando:

[email protected]> date 
Tue Nov 23 12:01:05 CEST 2007 

[email protected]> LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="-15d" date 
Mon Nov 8 12:01:12 CEST 2007 

Supponendo che le opere lib come pubblicizzato, si può ingannare il vostro programma a pensare che era in esecuzione un anno di anticipo utilizzando:

LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="+1y" ./your_program 
+1

Mac OS X utilizza un linker diverso, non penso che la variabile di ambiente sia la stessa. Prova DYLD_INSERT_LIBRARIES. – unwind

+0

@unwind Buon punto !! –

Problemi correlati